配置重写
语法
CONFIG REWRITE
- 从以下位置开始可用:
- 2.8.0
- 时间复杂度:
- O(1)
- ACL 类别:
-
@admin
,@slow
,@dangerous
,
这CONFIG REWRITE
命令重写了redis.conf
文件启动服务器时,应用所需的最小更改以使其反映服务器当前使用的配置,由于使用了CONFIG SET
命令。
重写以非常保守的方式执行:
- 注释和原始 redis.conf 的整体结构将尽可能保留。
- 如果旧的 redis.conf 文件中已存在选项,它将在相同的位置(行号)重写。
- 如果某个选项尚不存在,但已设置为其默认值,则重写过程不会添加该选项。
- 如果某个选项尚不存在,但已设置为非默认值,则会将其附加到文件末尾。
- 未使用的行将被清空。例如,如果您以前有多个
save
指令,但当前配置较少或没有,因为您禁用了 RDB 持久性,则所有行都将为空。
如果原始配置文件由于某种原因不再存在,CONFIG REWRITE 也能够从头开始重写配置文件。但是,如果服务器在没有配置文件的情况下启动,则 CONFIG REWRITE 将仅返回错误。
原子重写过程
为了确保 redis.conf 文件始终一致,也就是说,在出现错误或崩溃时,您总是以旧文件或新文件结尾,使用单个write(2)
调用,该调用具有足够的内容,至少与旧文件一样大。有时,为了确保生成的文件足够大,会以 comments 的形式添加额外的填充,然后文件会被截断以删除末尾的填充。
RESP2/RESP3 回复
简单的字符串回复:OK
当配置被正确重写时。否则,将返回错误。