首页/数据/Redis 进阶速查/MEMORY STATS 结构化内存视图
内存与管理99 条

MEMORY STATS 结构化内存视图

MEMORY STATS 以键值形式返回内存分布:峰值、dataset、overhead、客户端缓冲、复制缓冲、分配器统计等,便于脚本采集。

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

MEMORY STATS 是什么

MEMORY STATS 用字段与值的数组形式一次性给出内存构成:分配器统计、数据集大小与占比、峰值、各类客户端缓冲、复制积压、Lua 缓存、每个数据库的键数与开销。它比 INFO memory 的扁平字段层次更清楚,适合脚本采集后做趋势对比,用来回答内存到底花在哪。

基本信息

命令MEMORY STATS
版本Redis 4.0 及以上
输出嵌套结构的字段与值数组
重点字段dataset.bytes、dataset.percentage、peak.allocated、overhead.total
单位字节为主,ratio 类字段为比值
采集建议分钟级低频采集,秒级指标用 INFO memory

典型使用场景

  • 内存归因:dataset 占比低时,说明开销在连接、缓冲或分配器碎片上
  • 趋势监控:定期采集 peak.allocated 与 dataset.bytes,发现缓慢泄漏
  • 排查 RSS 与 used_memory 的差距:看 allocator 段与碎片字段
  • 复制与持久化排障:看复制积压和 AOF 缓冲是否异常增长
  • 上线前后对比:记录平均每键占用,评估数据结构是否合适

最小示例

最小示例
redis-cli MEMORY STATS                    # 完整输出,字段较多
redis-cli MEMORY STATS | grep -A1 dataset # 只取数据集相关字段
redis-cli MEMORY STATS | grep -A1 overhead  # 各类开销来源
redis-cli INFO memory | grep used_memory_dataset_perc  # 与 INFO 口径对照
redis-cli MEMORY DOCTOR                   # 让 Redis 自己给一段内存诊断结论

重点字段读法

字段含义异常信号
dataset.bytes数据集本身占用的字节增长曲线应与业务键量一致,脱节就要查
dataset.percentage数据集占已用内存的比例明显偏低说明开销或碎片吃掉了内存
peak.allocated历史峰值分配量远高于当前值说明曾有突发,核对 maxmemory 水位
overhead.totalRedis 自身结构开销合计随客户端数增长,突增先查连接数
keys.bytes-per-key平均每键占用字节突然变小常是键名膨胀、键数暴增
allocator-fragmentation.ratio分配器碎片率长期远大于 1 说明碎片严重,可考虑重启或清理
MEMORY STATS 要遍历各库统计键数与均值,键极多时本身有开销,不要放进秒级采集;秒级监控用 INFO memory。
字段会随版本增删,采集脚本按字段名取值并按未知字段容错,不要按数组下标解析。

易错点

  • 把单次快照当结论:内存问题是趋势问题,至少留存小时级数据再比对
  • 按下标解析输出:字段顺序随版本变化,脚本必须按字段名匹配
  • 高频调用 MEMORY STATS 做采集:它比 INFO 贵,会放大实例开销
  • 看到 dataset.percentage 低就急着扩容:低占比多来自客户端缓冲、复制积压或碎片,先看 overhead 与 allocator 字段归因

数据来源与参考

  • Redis 官方文档:MEMORY STATS 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌