Redis CONFIG REWRITE命令

Redis CONFIG REWRITE命令教程

Redis 的 CONFIG REWRITE 命令用于对启动 Redis 的服务器时所指定的 redis.conf 文件进行改写,因为 CONFIG SET 命令可以对服务器的当前配置进行修改,而修改后的配置可能和 redis.conf 文件中所描述的配置不一样, CONFIG REWRITE 的作用就是通过尽可能少的修改,将服务器当前所使用的配置记录到 redis.conf 文件中。

Redis CONFIG REWRITE命令运行方式

Redis CONFIG REWRITE 命令重写会以非常保守的方式进行:

  • 原有 redis.conf 文件的整体结构和注释会被尽可能地保留。
  • 如果一个选项已经存在于原有 redis.conf 文件中 ,那么对该选项的重写会在选项原本所在的位置(行号)上进行。
  • 如果一个选项不存在于原有 redis.conf 文件中,并且该选项被设置为默认值,那么重写程序不会将这个选项添加到重写后的 redis.conf 文件中。
  • 如果一个选项不存在于原有 redis.conf 文件中,并且该选项被设置为非默认值,那么这个选项将被添加到重写后的 redis.conf 文件的末尾,未使用的行会被留白。
  • 即使启动服务器时所指定的 redis.conf 文件已经不再存在, CONFIG REWRITE 命令也可以重新构建并生成出一个新的 redis.conf 文件。
  • 如果启动服务器时没有载入 redis.conf 文件, 那么执行 CONFIG REWRITE 命令将引发一个错误。
  • 对 redis.conf 文件的重写是原子性的,并且是一致的,如果重写出错或重写期间服务器崩溃,那么重写失败,原有 redis.conf 文件不会被修改。 如果重写成功, 那么 redis.conf 文件为重写后的新文件。

Redis CONFIG REWRITE命令详解

语法

192.168.98.70:6379> CONFIG REWRITE parameter

参数

参数 描述
parameter 要重写的配置的参数。

返回值

一个状态值:如果配置重写成功则返回 OK ,失败则返回一个错误。

时间复杂度

O(1)

可用版本

>= 2.8.0

案例

CONFIG REWRITE重写配置

使用 CONFIG REWRITE 重写 Redis 配置

... appendonly no ...

我们在没有做修改之前,查看了 redis 的配置,我们看到此时的配置的 appendonly 选项的值为为 no,同时,我们使用 CONFIG GET 命令,获取当前的配置,显示如下:

127.0.0.1:6379> CONFIG GET appendonly 1) "appendonly" 2) "no"

我们看到了,使用 CONFIG GET 获取的配置仍然为 no,现在,我们使用 CONFIG SET 修改配置,如下:

127.0.0.1:6379> CONFIG SET appendonly yes OK

再次使用 CONFIG GET 命令,获取当前的配置,显示如下:

127.0.0.1:6379> CONFIG GET appendonly 1) "appendonly" 2) "yes"

我们看到,此时的配置变成了 yes,最后,我们使用 CONFIG REWRITE 将该配置写入到配置文件中,如下:

127.0.0.1:6379> CONFIG REWRITE OK

我们再次查看当前的配置文件,显示如下:

... appendonly yes ...

我们看到,此时的配置已经变成了 yes。

Redis CONFIG REWRITE命令总结

Redis 的 CONFIG REWRITE 命令用于对启动 Redis 的服务器时所指定的 redis.conf 文件进行改写。