首页/数据/Redis 进阶速查/MEMORY USAGE SAMPLES 采样精度
内存与管理99 条

MEMORY USAGE SAMPLES 采样精度

MEMORY USAGE key SAMPLES n 指定对集合内元素的采样数量;样本为 0 表示全量扫描,适合精确核对。

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

MEMORY USAGE 的采样口径

MEMORY USAGE 给出单个键占用的总内存,包含对象头、键名与数据结构开销。对集合类结构(哈希、列表、集合、有序集合),单个元素的平均开销并不固定,命令通过采样来估算:SAMPLES 指定采样元素数,默认 5 个,SAMPLES 0 表示全量遍历得到精确值。估算快、精确慢,取舍取决于你要的是趋势还是台账数字。

基本信息

语法MEMORY USAGE <key> [SAMPLES <count>]
默认采样数5 个元素
SAMPLES 0全量遍历,结果精确但耗时随元素数量增长
适用范围采样只对集合类结构有意义
使用建议大键定位用默认值,容量审计用 0

两种口径的取舍

用法精度成本与场景
默认采样估算值,与真实值可能有偏差巡检与趋势观察
提高采样数偏差更小需要更稳的判断但仍不想全量扫
SAMPLES 0精确容量审计与单键对账,需评估耗时
键不存在返回空结果先确认键存在与类型再解读

示例

示例
redis-cli MEMORY USAGE big:zset              # 默认采样估算
redis-cli MEMORY USAGE big:zset SAMPLES 10   # 提高采样数
redis-cli MEMORY USAGE big:zset SAMPLES 0    # 全量遍历,精确但慢
redis-cli ZCARD big:zset                     # 先看元素数量,判断是否值得全量
redis-cli --bigkeys                          # 批量找候选键,再逐个精测

典型使用场景

  • 大键定位:先批量筛候选,再对个别键精测
  • 容量台账:用精确口径记录关键键的开销
  • 拆分前后对比:确认改造是否真的省了内存
  • 采样偏差评估:对比默认采样与全量结果,判断能不能省这一步
  • 单键开销核对:排查个别键异常占用的原因
线上实例慎用 SAMPLES 0 扫描超大集合:全量遍历会长时间占用主线程,安排在从库或业务低峰执行更稳妥。
估算值与精确值要在记录里分开标注,避免同一份容量台账里两种口径的数字混用。
把采样估算值当精确值上报容量,偏差会在超大键上被放大;对外给出的容量数字应标注统计口径。

易错点

  • 对超大集合做全量扫描会长时间占用主线程,未安排低峰或从库
  • 把采样估算值当精确值上报容量,偏差在超大键上被放大
  • 键不存在返回空结果被当成零占用,误判内存去向
  • 只测单个键不看整体构成,优化方向没有优先级
  • 用该命令的数值直接与 rss 做加减,忽略两者统计口径不同

数据来源与参考

  • Redis 官方文档:MEMORY USAGE 采样参数
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌