首页/数据/Redis 进阶速查/MEMORY 命令家族速览
内存与管理99 条

MEMORY 命令家族速览

MEMORY 家族覆盖测量(USAGE)、诊断(DOCTOR/STATS/OVERHEAD)、维护(PURGE)与分配器(MALLOC-STATS),按目的选用。

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

MEMORY 命令家族是什么

MEMORY 是 Redis 的内存诊断命令族,按目的分成四类:测量(USAGE)、诊断(DOCTOR、STATS、OVERHEAD)、维护(PURGE)与分配器细节(MALLOC-STATS)。日常巡检用 DOCTOR 加 STATS 就能覆盖大部分问题,定位到具体键或分配器层次时再往下钻。

基本信息

命令族MEMORY USAGE / DOCTOR / STATS / OVERHEAD / PURGE / MALLOC-STATS / HELP
用途分类单键测量、整体体检、分配器分析、内存归还
版本Redis 4.0 起逐步补齐,各子命令可读版本不同
权限普通连接即可执行,PURGE 建议低峰使用

典型使用场景

  • 内存上涨排查:先用 MEMORY DOCTOR 看结论,再用 STATS 定位分布
  • 大键治理:对怀疑对象逐个执行 MEMORY USAGE 核查占用
  • 分配器分析:碎片或分配开销异常时看 MALLOC-STATS 与 OVERHEAD
  • 容量估算:抽样测量不同类型键的平均占用作为估算基数
  • 内存归还:批量删除后想让操作系统拿回内存页,用 PURGE 向分配器请求

常用调用

常用调用
redis-cli MEMORY HELP                      # 列出当前版本支持的子命令
redis-cli MEMORY USAGE sample:key          # 单键占用估算(默认采样 5 个元素)
redis-cli MEMORY USAGE big:hash SAMPLES 0  # 全量采样精确测量,开销更高
redis-cli MEMORY DOCTOR                    # 整体体检结论与建议
redis-cli MEMORY STATS                     # 结构化内存分布
redis-cli MEMORY PURGE                     # 请求分配器归还空闲页

子命令对照

子命令用途使用注意
MEMORY USAGE单键占用估算容器默认只采样部分元素,大键偏差明显
MEMORY DOCTOR整体体检与建议结论是提示不是判决,需结合指标判断
MEMORY STATS结构化内存分布字段随版本变化,脚本要容错
MEMORY OVERHEAD分配开销分桶统计深入分配器层面时使用
MEMORY PURGE请求归还空闲页仅对 jemalloc 有效,效果取决于碎片情况
MEMORY MALLOC-STATS分配器内部统计输出面向分配器,可读性较差
USAGE 是估算:容器类型默认只采样部分元素,键越大偏差越明显;需要精确值就显式指定 SAMPLES 0,但那是遍历整个键的开销。
对大键执行 SAMPLES 0 测量、PURGE 或 MALLOC-STATS 都会带来额外开销,生产环境放在低峰执行,并对大键提前做拆分。
MEMORY 只回答内存怎么分布、单键占多少,不回答为什么涨:判断根因仍要结合 INFO 的命中率、淘汰、连接缓冲和业务侧的变更记录。

易错点

  • 把 MEMORY DOCTOR 的建议当操作指令直接执行,未评估对业务的影响
  • 对超大键用 SAMPLES 0 测量,遍历开销转移到业务请求的等待时间里
  • 解析脚本写死 STATS 字段位置,Redis 升级后字段变化导致采集静默失败
  • 指望 MEMORY PURGE 解决内存不回落,忽略分配器与碎片本身的机制

数据来源与参考

  • Redis 官方文档:MEMORY 命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌