首页/数据/Redis 进阶速查/何时该扩容:判断信号
内存与管理99 条

何时该扩容:判断信号

扩容信号包括:淘汰速率上升且命中率下降、used_memory 长期贴近上限、延迟随内存压力波动、写入 OOM 报错出现频次增加。

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

扩容判断要区分两类问题

扩容决策的前提是把问题分成两类:容量不足(内存长期贴近上限、淘汰速率上升、命中率下降、出现写错误),和访问模式恶化(少数键或少数客户端把资源吃光)。前者加资源有效,后者扩容只是把故障推迟;先看清是哪一类,再谈加内存还是改代码。

基本信息

硬信号写入返回内存相关错误、淘汰持续增长
软信号命中率下滑、延迟随内存压力波动
结构信号碎片率高、客户端缓冲占比上升
可选动作加内存、拆分实例、增加分片、优化键结构
判断前提先确认访问模式还有没有可优化空间

信号与优先动作

信号含义优先动作
used_memory 长期贴近 maxmemory容量水位高评估扩容,或缩短数据生存期
evicted_keys 增长且命中率下降淘汰开始影响业务扩容,或调整淘汰策略与容量预算
写入返回内存相关错误已到硬上限立即扩容,或释放可再生成的数据
少数键或少数分片独占资源热点倾斜拆分热点键,单纯加节点无效
碎片率高、rss 远大于 used_memory内存利用效率低评估碎片整理、迁移或重启重建

取证命令

取证命令
redis-cli INFO memory | grep -E 'used_memory_human|maxmemory_human|mem_fragmentation_ratio'
redis-cli INFO stats | grep -E 'evicted_keys|keyspace_hits|keyspace_misses'
redis-cli MEMORY DOCTOR
redis-cli MEMORY STATS | head -20
redis-cli --bigkeys                      # 确认是否存在可拆分的大键

典型使用场景

  • 容量评审:预算与水位对照,决定扩容节点数或内存规格
  • 告警响应分级:区分「需要立即扩容」与「可以优化结构」
  • 分片数决策:判断是总量不足还是分布不均
  • 成本评估:确认扩容收益大于键结构与写入模式优化的成本
  • 复盘口径:说明这次故障扩容能否真正解决
判断顺序建议是先看键结构与访问模式(大键、批量全量扫描、无节制写入),再评估资源;能靠代码改掉的增长,加机器只是把曲线往后推。
集群环境还要看分布是否均衡:单个分片内存远高于其他分片时,增加节点不解决问题,先处理倾斜。

易错点

  • 只看内存占比不看淘汰与命中率,扩早了浪费资源、扩晚了伤业务
  • 热点倾斜导致的压力用增加节点解决,问题依旧存在
  • 出现写错误后先重启,掩盖了容量与结构问题
  • 扩容后不做回归观察,无法确认信号是否真的消失
  • 缺少容量增长的历史曲线,扩容只能凭感觉估量

数据来源与参考

  • Redis 官方文档:容量与扩展建议
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌