文章目录
- 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)