*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
*常见错误
- 对不存在的 key 返回 0:不是错误,只是 key 不存在。
*最佳实践
- 大 key 排查:MEMORY USAGE 找出内存占用大的 key,优化数据结构或拆分。
- 采样精度:复杂类型(Hash 等)使用 SAMPLES 增加采样数量提高精度,但会更慢。
*FAQ
Q: MEMORY USAGE 和 INFO memory 有什么区别? A: MEMORY USAGE 返回单个 key 的内存;INFO memory 返回整个 Redis 实例的内存统计。
Q: MEMORY USAGE 包含 key 本身的内存吗? A: 包含。返回 key 名、value、以及 Redis 内部数据结构开销的总和。