共计 2391 个字符,预计需要花费 6 分钟才能阅读完成。
无意中看到了 redis 的 config rewrite 这个命令。闲来无聊,所以打算自己做个实验。下面的文章是 redis 关于 config rewrite 的描述信息:
CONFIG REWRITE 命令对启动 Redis 服务器时所指定的 redis.conf 文件进行改写:因为 CONFIG SET 命令可以对服务器的当前配置进行修改,而修改后的配置可能和 redis.conf 文件中所描述的配置不一样,CONFIG REWRITE 的作用就是通过尽可能少的修改,将服务器当前所使用的配置记录到 redis.conf 文件中。
重写会以非常保守的方式进行:
原有 redis.conf 文件的整体结构和注释会被尽可能地保留。
如果一个选项已经存在于原有 redis.conf 文件中,那么对该选项的重写会在选项原本所在的位置(行号)上进行。
如果一个选项不存在于原有 redis.conf 文件中,并且该选项被设置为默认值,那么重写程序不会将这个选项添加到重写后的 redis.conf 文件中。
如果一个选项不存在于原有 redis.conf 文件中,并且该选项被设置为非默认值,那么这个选项将被添加到重写后的 redis.conf 文件的末尾。
未使用的行会被留白。比如说,如果你在原有 redis.conf 文件上设置了数个关于 save 选项的参数,但现在你将这些 save 参数的一个或全部都关闭了,那么这些不再使用的参数原本所在的行就会变成空白的。
即使启动服务器时所指定的 redis.conf 文件已经不再存在,CONFIG REWRITE 命令也可以重新构建并生成出一个新的 redis.conf 文件。
另一方面,如果启动服务器时没有载入 redis.conf 文件,那么执行 CONFIG REWRITE 命令将引发一个错误。
在上面 redis 的描述中,我们在线更改 redis.conf 配置文件的时候,执行 config rewrite 将在线更改的 redis.conf 配置同步应用到读取的配置文件中。
实验步骤:
1.config get maxclients
2.config set maxclients “100000”
3.config rewrite
ERR CONFIG REWRITE failed: Permission denied
发现执行 config rewrite 命令错误,一开始的时候怀疑是因为权限的原因。
https://github.com/arioch/puppet-redis/commit/09f52cfda45ecd04f42b05f1b37b1e3a36154cd5
执行更改权限的命令:
chown redis:redis /etc/redis.conf
更改权限之后,继续在线执行 config rewrite,发现还是不行,然后再 redis 的官方文档查看这个 config rewrite 这个命令信息,可以得到:
CONFIG REWRITE is also able to rewrite the configuration file from scratch if the original one no longer exists for some reason. However if the server was started without a configuration file at all, the CONFIG REWRITE will just return an error.
https://redis.io/commands/config-rewrite
上述描述可以比较明显的得到就是 redis 启动的没有指定配置文件的时候,执行这个命令是会报错的。所以只有在启动 redis 的时候指定 redis.conf 之后才能执行这个命令。
下面关于 Redis 的文章您也可能喜欢,不妨参考下:
Ubuntu 14.04 下 Redis 安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm
Redis 主从复制基本配置 http://www.linuxidc.com/Linux/2015-03/115610.htm
CentOS 7 下 Redis 的安装与配置 http://www.linuxidc.com/Linux/2017-02/140363.htm
Ubuntu 14.04 安装 Redis 与简单配置 http://www.linuxidc.com/Linux/2017-01/139075.htm
Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm
Redis 单机 & 集群离线安装部署 http://www.linuxidc.com/Linux/2017-03/141403.htm
CentOS 7.0 安装 Redis 3.2.1 详细过程和使用常见问题 http://www.linuxidc.com/Linux/2016-09/135071.htm
Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm
Ubuntu 15.10 下 Redis 集群部署文档 http://www.linuxidc.com/Linux/2016-06/132340.htm
Redis 实战 中文 PDF http://www.linuxidc.com/Linux/2016-04/129932.htm
Redis 热迁移实战总结 http://www.linuxidc.com/Linux/2017-02/141083.htm
Redis3.0 配置文件详解 http://www.linuxidc.com/Linux/2017-03/141369.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/142909.htm