首页/数据/Redis 进阶速查/used_memory_dataset_perc:数据占比
内存与管理99 条

used_memory_dataset_perc:数据占比

used_memory_dataset_perc 表示数据集内存占总内存的百分比,可快速判断内存主要花在数据本身还是各类开销上。

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

used_memory_dataset_perc 是什么

used_memory_dataset_perc 是 INFO memory 里的百分比字段,表示数据集内存在「已用内存减去启动开销」中的占比,口径为 used_memory_dataset /(used_memory - used_memory_startup)。它用一句话回答:内存主要花在业务数据上,还是花在连接、缓冲、碎片这些与数据无关的地方。

基本信息

字段used_memory_dataset_perc
出处INFO memory,Redis 4.0 及以上
口径used_memory_dataset /(used_memory - used_memory_startup)
形式带百分号的字符串,如 89.7%
配套字段used_memory_dataset、used_memory_startup、used_memory_overhead
用途快速判断内存归属方向

典型使用场景

  • 扩容前体检:占比高说明加内存能直接装下更多数据
  • 排查内存异常增长:占比骤降说明增长来自非数据部分
  • 判断实例是否偏小:连接不多却占比低,多半是碎片或持久化缓冲
  • 配合 maxmemory 规划:占比稳定的实例,数据量与内存近似线性
  • 建立监控基线:把该值放进内存看板,偏离基线时触发排查

最小示例

最小示例
redis-cli INFO memory | grep used_memory_dataset_perc  # 数据占比
redis-cli INFO memory | grep -E 'used_memory_human|used_memory_startup|used_memory_overhead'  # 分子分母
redis-cli INFO memory | grep used_memory_dataset        # 数据集字节数
redis-cli MEMORY STATS | grep -A1 dataset               # 结构化口径复核

占比怎么读

取值说明建议动作
90% 以上内存几乎都给了数据按数据量估算扩容或优化即可
70%~90%存在一定非数据开销看 overhead.total 明细,通常无需处理
低于 70%开销占比偏高先查连接数、输出缓冲、复制积压
明显低于自身历史基线增长来自与数据结构无关的部分用 MEMORY STATS 定位是哪个字段在涨
该口径已扣除启动开销,因此会比直接算 used_memory_dataset / used_memory 更高;做基线比较时必须始终用同一个字段。
占比高不代表物理内存没浪费:RSS 明显大于 used_memory 时,碎片要看 MEMORY STATS 里的分配器碎片比值。
排查顺序建议固定下来:先看 dataset.percentage 判断方向,再按 overhead.total 拆开销,最后看分配器碎片与 RSS 差距。顺序固定后,每次结论都能和上一次对齐,避免重复劳动。

易错点

  • 把占比低一律当故障:实例刚启动、连接数很少时该值本来就偏低,先建立基线再判断
  • 把百分比当绝对量:占比高不等于数据一定多,分子分母要一起看
  • 只看单次采样:内存指标波动大,至少用小时级曲线判断趋势
  • 混用两套口径:自己用 dataset 除以 used_memory 算,与字段值对不上,白排查一轮
  • 用该字段衡量碎片:它是数据与开销的比例,碎片要去 MEMORY STATS 看分配器 resident 与 allocated 的差距

数据来源与参考

  • Redis 官方文档:INFO memory 数据集口径
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌