Redis CONFIG REWRITE 命令对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写。
CONFIG SET 命令可以对服务器的当前配置进行修改, 而修改后的配置可能和 redis.conf 文件中所描述的配置不一样, CONFIG REWRITE 的作用就是通过尽可能少的修改, 将服务器当前所使用的配置记录到 redis.conf 文件中。
*语法
redis Config rewrite 命令基本语法如下:
redis 127.0.0.1:6379> CONFIG REWRITE parameter
重写以非常保守的方式执行:
- 注释和原始 redis.conf 文件的整体结构会尽可能的保留下来。
- 如果一个选项在旧的 redis.conf 文件中已经存在,那么它会在相同的位置(行号)被重写。
- 如果某个选项在配置文件中尚不存在,但被设置为了该选项的默认值,那么他将不会被重写进程写入配置文件。
- 如果某个选项在配置文件中尚不存在,但被设置了一个非默认值,那么它会被追加到文件的末尾。
- 未使用的行将会留空。例如,如果你之前在配置文件中有多个
save
配置项,但由于你禁用了 RDB 持久化,当前的save
配置变少了或者变为空,那么所有的那些行将会是空行。
如果原始文件由于某些原因不再存在,CONFIG REWRITE 也能够从头开始重写配置文件。但是,如果服务器启动的时候没有指定任何配置文件,则 CONFIG REWRITE 将只会返回一个错误。
*原子重写过程
为了保证redis.conf文件始终是一致的,也即,在异常或者崩溃的时候,你的配置文件要么是旧的文件,或者是重写完的新文件。重写是通过一次具有足够内容的write(2)
调用来执行的,至少和旧的文件一样大。有时会以注释的形式添加额外的padding,以确保生成的文件足够大,稍后文件会被截断以删除末尾的padding
*返回值
字符串: 当配置被正确重写时返回OK
,否则返回错误。