文章目录

  • 1.1 引入
  • 1.2 config get
  • 1.3 config set
  • 1.4 config rewrite
  • 1.5 关于对config做别名的问题


1.1 引入

当Redis实例启动后,我在线怎么看某个参数的值、我能否在线修改、在线修改后我是手动去修改配置文件呢,还是说可以在线直接写入配置文件。

1.2 config get

用来读取redis服务器的配置文件参数,但并不是所有参数都支持(例如:rename-command参数,这个参数是对一些命令做别名,如果这都让你看到了,那我做别名又有何用)。通过 CONFIG GET * 可以查看所有支持的参数。

#### 基本示例
config get *           # 查看当前redis实例所有参数配置值
config get tim*        # 查看以tim开头的所有参数配置
config get time?out    # 查看time开头,中间任意一个字符,以out结尾的参数的配置

#### 特殊示例
01:redis.conf配置文件中对RDB的配置如下所示
   save 900 1
   save 300 10

02:在线用config get save查看的结果如下所示
1) "save"
2) "900 1 300 10"

1.3 config set

用于在redis运行期间重写某些(有些参数是不支持在线重写的)配置参数,而不用重启Redis。注意:有些参数是可以在线修改的,但不要不欠考虑的在线修改,例如requirepass参数,这个参数是为redis实例设置连接密码的。

config set timeout 360     
# 直接成功,因为timeout参数支持在线修改。
# 在线修改timeout参数的值为360

config set port 6399    
# 会直接报错,因为port参数是不支持在线修改的。

1.4 config rewrite

重写启动时指定的redis.conf文件。应用场景如下所示:
01:有些可在线修改的参数(假如是A)被我们在线用config set修改后,这时我们可以用config rewrite直接重写到redis.conf文件中,就不再需要我们人为去重写redis.conf文件。若重写前redis.conf文件中不存在A参数,会把A参数和其值写入到redis.conf文件的最后。若重写前redis.conf文件中存在A参数,会把A参数对应的值给重写,且A参数还是在原有位置。这样就保证了配置文件中某参数的值与线上实际的值是一致的。
02:redis实例启动后,由于某些原因导致原始文件(redis.conf)不再存在,config rewrite也能够从头开始生写整个配置文件。但是,如果服务器启动的时候没有指定任何配置文件,则CONFIG REWRITE将只会返回一个错误。

config set  timeout 360      # 在线修改timeout参数的值为360
config rewrite               # 重写配置文件redis.conf

1.5 关于对config做别名的问题

我们可以在redis实例启动前在redis.conf中对config做别名(要么不用,要么用另外的名称),示例如下:

rename-command   config   cfg   
# 对config做别名为cfg,若你再用config的话,会报如下错误
# (error) ERR unknown command `config`(错误,ERR未知的命令config)

或

rename-command   config  ""     
# 不让其使用config
# 这样连在线查看参数的值都没法了
# 所以生产不建议这样干(不让其使用config)