首页/数据/Redis 进阶速查/动态调整 maxmemory 的正确姿势
内存与管理99 条

动态调整 maxmemory 的正确姿势

运行中调整 maxmemory 立即生效:调低可能即时触发淘汰或拒绝写入,调高不会回退已淘汰数据,操作前先评估业务影响。

Redis 进阶速查数据更新于 2026-10-13

运行中改上限立即生效

运行中调整内存上限会立刻生效,两个方向的后果并不对称:调低可能马上触发大批淘汰,或者让写命令开始报错;调高只会放宽上限,不会把已经淘汰掉的数据找回来。所以这一步要按变更流程走:先看当前用量与淘汰策略,再执行修改,然后在随后几分钟里盯着淘汰计数与内存曲线,确认没有出现集中淘汰。

基本信息

修改方式运行时配置命令,立即生效
调低的后果可能触发批量淘汰或写请求被拒
调高的后果仅放宽上限,不恢复已淘汰数据
观察指标淘汰计数、过期计数与内存曲线
执行要求纳入变更流程并保留操作记录

典型使用场景

  • 扩容前临时放宽上限,缓解内存吃紧导致的写入报错
  • 缩容机器前先降低上限,观察业务在更小内存下的表现
  • 排查内存告警时核对当前配置与用量是否匹配
  • 演练中验证不同上限下淘汰策略的实际行为
  • 容量评审后把新上限写回配置文件,避免重启后回退

调整示例

调整示例
redis-cli CONFIG GET maxmemory maxmemory-policy      # 先看现状
redis-cli INFO memory | grep -E 'used_memory:|maxmemory'   # 当前用量与上限
redis-cli CONFIG SET maxmemory 4gb                   # 调高上限
redis-cli INFO stats | grep -E 'evicted_keys'        # 观察是否出现淘汰
redis-cli CONFIG REWRITE                             # 写回配置文件持久生效

动作与影响

动作立即影响必须观察
调低上限可能触发批量淘汰或写请求报错淘汰计数增速与业务报错
调高上限放宽限制,写入恢复正常内存曲线是否继续上涨
上限设为 0视为不限制,风险很高容器或系统层是否会直接杀掉进程
未写回配置文件重启后回到旧值重启前后行为一致性
调低上限之前先估算当前用量与目标值的差距,差距越大越可能触发集中淘汰,业务侧要提前做好准备。
调高上限只是缓解手段,同时要更新容量规划,否则增长趋势被掩盖,下一次告警会更晚更急。

易错点

  • 调低上限前没有估算当前用量,瞬间触发大批淘汰,缓存命中率断崖式下降
  • 只改运行时配置不写回文件,重启后上限回退,问题在重启时才暴露
  • 把上限设置为不限制,容器或系统层内存耗尽时进程被直接杀掉,比报错更难排查
  • 调高上限后不再跟踪增长趋势,容量规划停留在过时的结论上

数据来源与参考

  • Redis 官方文档:CONFIG SET 运行时配置
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌