*Redis MEMORY USAGE 命令

返回一个 key 及其 value 的内存使用量(字节)。


*语法

MEMORY USAGE key [SAMPLES count]

*参数说明

参数 类型 必填 说明
key String 键名
SAMPLES Integer 对复杂类型(Hash/List/Set/ZSet)采样估算,默认 5

*返回值

条件 返回值
key 存在 内存使用量(Integer)
key 不存在 0

*时间复杂度

O(N),N 为采样数量。实际采样时可能遍历部分元素。


*示例

> SET mykey "hello world"
OK
> MEMORY USAGE mykey
(integer) 56

> HSET user:1001 name "Alice" age "30"
> MEMORY USAGE user:1001
(integer) 104

> MEMORY USAGE user:1001 SAMPLES 10
(integer) 104

*常见错误

  1. 对不存在的 key 返回 0:不是错误,只是 key 不存在。

*最佳实践

  1. 大 key 排查MEMORY USAGE 找出内存占用大的 key,优化数据结构或拆分。
  2. 采样精度:复杂类型(Hash 等)使用 SAMPLES 增加采样数量提高精度,但会更慢。

*FAQ

Q: MEMORY USAGE 和 INFO memory 有什么区别? A: MEMORY USAGE 返回单个 key 的内存;INFO memory 返回整个 Redis 实例的内存统计。

Q: MEMORY USAGE 包含 key 本身的内存吗? A: 包含。返回 key 名、value、以及 Redis 内部数据结构开销的总和。