首页/数据/数据库速查/CONFIG GET/SET/REWRITE 动态配置
Redis 命令96 条

CONFIG GET/SET/REWRITE 动态配置

CONFIG GET 查参数、CONFIG SET 热改(多数免重启)、CONFIG REWRITE 把当前生效值写回启动配置文件;只 SET 不 REWRITE,重启后配置丢失。

数据库速查数据更新于 2026-10-13

CONFIG GET / SET / REWRITE 是什么

CONFIG 系列提供运行时配置能力:GET 查询当前值,SET 热修改(多数参数无需重启),REWRITE 把当前生效值写回启动时使用的配置文件。最容易踩的坑是「只 SET 不 REWRITE」——参数当下生效,实例一重启就回到旧值,于是问题在下次重启时复现,排查方向常常跑偏。还有一部分参数是只读的,只能改配置文件后重启。

基本信息

适用版本Redis 全版本;CONFIG SET 支持多参数改写需 7.0+
查询CONFIG GET <pattern>(支持通配)
热改CONFIG SET <param> <value>
持久化CONFIG REWRITE 写回启动配置文件
前置条件REWRITE 要求实例启动时带了配置文件,否则报错
只读参数少部分参数不可热改,需改文件后重启

典型使用场景

  • 应急调整:慢日志阈值、最大连接数等参数临时热改
  • 变更留痕:改完后 REWRITE 写回文件,避免重启回退
  • 排查配置漂移:对比 GET 到的值与配置文件内容
  • 容器化部署:确认配置文件已挂载,否则 REWRITE 只写进容器层
  • 容量调整:修改 maxmemory 或淘汰策略并立即验证效果

标准流程

标准流程
# 1) 先记录原值,便于对比与回滚
CONFIG GET maxmemory
CONFIG GET maxmemory-policy

# 2) 热改参数
CONFIG SET maxmemory 4gb
CONFIG SET maxmemory-policy allkeys-lru
CONFIG SET slowlog-log-slower-than 10000

# 3) 写回启动配置文件(前提:启动时带了配置文件)
CONFIG REWRITE

# 4) 核对已生效
CONFIG GET maxmemory; CONFIG GET slowlog-log-slower-than
CONFIG RESETSTAT   # 排查时重置 INFO 统计

要点对照

操作影响范围注意
CONFIG SET立即生效,仅运行期重启后失效,除非 REWRITE
CONFIG REWRITE写回启动配置文件无配置文件启动时报错
只读参数无法热改需改文件并重启,评估业务影响
CONFIG RESETSTAT重置 INFO 统计会丢失历史计数,排查前先记录
容器场景配置文件需挂载否则 REWRITE 结果随容器重建丢失
容器环境的重点是挂载:把配置文件从宿主机挂载进容器,REWRITE 的结果才落在持久化位置;否则写进容器可写层,容器重建后配置又回到镜像里的旧值。
不确定语义的参数不要热改:调整 maxmemory 或淘汰策略会立刻触发大量淘汰甚至引发 OOM;修改持久化相关参数(如 save 规则、AOF 开关)会改变数据落盘行为,必须在低峰并有人盯盘时进行。

易错点

  • SET 后忘记 REWRITE:重启回到旧值,形成「配置又变回去了」的反复故障
  • 不了解参数含义就热改 maxmemory 或淘汰策略:当场大量淘汰数据或触发 OOM
  • 实例未带配置文件启动:要 REWRITE 时直接报错,只能重启并补配置
  • 改前不记录原值:出现问题时无法快速回滚到之前的状态
  • 只在一台节点上改:多节点架构下节点间配置不一致,故障时行为差异大

数据来源与参考

  • Redis 官方文档: CONFIG SET
  • Redis 官方文档: CONFIG REWRITE

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌