配置重写

Syntax
CONFIG REWRITE
Available since:
2.8.0
Time complexity:
O(1)
ACL categories:
@admin, @slow, @dangerous,

CONFIG REWRITE 命令重写服务器启动时使用的 redis.conf 文件,应用最小的更改以使其反映服务器当前使用的配置,这可能与原始配置不同,因为使用了 CONFIG SET 命令。

重写以非常保守的方式进行:

  • 原始redis.conf的注释和整体结构尽可能保留。
  • 如果旧redis.conf文件中已存在某个选项,它将在相同位置(行号)被重写。
  • 如果某个选项原本不存在,但被设置为其默认值,则重写过程不会添加它。
  • 如果某个选项原本不存在,但被设置为非默认值,它将被追加到文件的末尾。
  • 未使用的行将被留空。例如,如果您曾经有多个save指令,但由于您禁用了RDB持久化,当前配置中较少或没有这些指令,所有相关行都将被留空。

如果由于某种原因原始配置文件不再存在,CONFIG REWRITE 也能够从头开始重写配置文件。然而,如果服务器启动时根本没有配置文件,CONFIG REWRITE 将只会返回一个错误。

原子重写过程

为了确保redis.conf文件始终保持一致,即在错误或崩溃时,您总是以旧文件或新文件结束,重写是通过一个write(2)调用来执行的,该调用具有足够的内容,至少与旧文件一样大。有时会以注释的形式添加额外的填充,以确保生成的文件足够大,然后文件会被截断以删除末尾的填充。

RESP2/RESP3 回复

Simple string reply: OK when the configuration was rewritten properly. Otherwise an error is returned.
RATE THIS PAGE
Back to top ↑