首页/数据/Redis 进阶速查/used_memory_peak 与峰值复盘
内存与管理99 条

used_memory_peak 与峰值复盘

used_memory_peak 记录历史内存峰值,事后复盘的内存台阶、扩容时间点与业务事件可以在这条线索上对齐。

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

used_memory_peak 是什么

used_memory_peak 记录实例自启动以来 used_memory 达到过的最大值,配套的 used_memory_peak_perc 表示当前内存占峰值的百分比。它解决的是「当前值看不出来的问题」:间歇性批量任务、迁移导入、预热阶段造成的尖峰,只有峰值能留下痕迹,因此它是容量基线与事后复盘的核心字段。

基本信息

字段used_memory_peak、used_memory_peak_human、used_memory_peak_perc
口径历史最大的 used_memory
刷新方式由定时任务比对刷新,极短的瞬时尖峰可能漏记
生命周期实例重启后按启动占用重置
配套字段MEMORY STATS 中的 peak.allocated
主要用途容量基线、事后复盘、maxmemory 水位设定

典型使用场景

  • 复盘内存台阶:把峰值与发布、批任务、全量同步的时间点对齐
  • 设定 maxmemory:水位应高于历史峰值,否则突发阶段会先触发淘汰
  • 定位突发来源:峰值远高于当前值,说明存在间歇性大对象或批量任务
  • 规格申报:向上申请资源要用峰值而不是当前值
  • 监控校验:外部监控采集的峰值与实例内峰值互相印证

最小示例

最小示例
redis-cli INFO memory | grep -E 'used_memory_human|used_memory_peak_human|used_memory_peak_perc'
redis-cli MEMORY STATS | grep -A1 peak              # 分配器口径的峰值
redis-cli CONFIG GET maxmemory                     # 当前水位设置
redis-cli INFO stats | grep -E 'evicted_keys|rejected_connections'  # 是否已被动淘汰
for i in $(seq 1 30); do date; redis-cli INFO memory | grep used_memory_human; sleep 1; done  # 秒级采样看尖峰

相关字段读法

字段含义怎么用
used_memory_peak历史最大已用内存与业务事件对齐,定位尖峰来源
used_memory_peak_human同上的人类可读格式告警文案直接用,避免人工换算
used_memory_peak_perc当前内存占峰值的比例接近 100% 说明正处在历史高位
peak.allocated分配器口径的峰值与 used_memory_peak 口径不同,选一个做基线
峰值是实例内自记的,重启就重置;跨重启的长期基线必须由外部监控承担,否则重启之后就没有参照物了。
maxmemory 低于历史峰值,意味着预热或批量导入阶段就会开始淘汰;用「峰值加余量」来定水位,比用当前值稳妥。

易错点

  • 重启后拿新峰值当容量依据:计数从启动占用重新累积,明显低于真实历史水位
  • 把峰值当当前值上报:报表与告警都会失真,两个字段必须分开采集与展示
  • 只看实例内峰值:重启、迁移后基线断档,长期趋势要靠外部监控
  • 用当前内存而不是峰值设 maxmemory:突发期间先淘汰掉的是有用键
  • 以为峰值能抓住一切尖峰:它由定时任务刷新,毫秒级短尖峰可能漏记,关键场景仍需秒级外部采样

数据来源与参考

  • Redis 官方文档:used_memory_peak 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌