*Redis OBJECT 命令 查看 Redis 对象的内部信息
*OBJECT
*语法
OBJECT ENCODING key
OBJECT FREQ key
OBJECT IDLETIME key
OBJECT REFCOUNT key
*说明
检查 Redis 对象的内部编码和元数据信息。
子命令:
ENCODING:返回 key 的内部编码方式FREQ:返回 key 的 LFU 访问频率(>= 4.0)IDLETIME:返回 key 的空闲时间(秒,>= 2.2.3)REFCOUNT:返回 key 的引用计数
常见编码:
- 字符串:
raw、int、embstr - 列表:
ziplist、quicklist - 集合:
intset、hashtable - 有序集合:
ziplist、skiplist - 哈希:
ziplist、hashtable
*示例
# 检查字符串编码
redis-cli SET mykey "Hello"
redis-cli OBJECT ENCODING mykey
# 检查整数编码
redis-cli SET numkey 42
redis-cli OBJECT ENCODING numkey
# 检查列表编码
redis-cli RPUSH mylist "a" "b" "c"
redis-cli OBJECT ENCODING mylist
# 检查引用计数
redis-cli OBJECT REFCOUNT mykey
# 检查空闲时间
redis-cli OBJECT IDLETIME mykey
# 检查 LFU 频率(需要配置 maxmemory-policy 为 LFU)
redis-cli OBJECT FREQ mykey
# 监控脚本:统计各编码类型数量
#!/bin/bash
redis-cli KEYS "*" | while read key; do
encoding=$(redis-cli OBJECT ENCODING "$key" 2>/dev/null)
if [ -n "$encoding" ]; then
echo "$key: $encoding"
fi
done | sort -t: -k2 | uniq -c | sort -rn
*返回值
- Bulk string:编码名称或元数据值
- nil:key 不存在
*版本兼容性
| 版本 | 说明 |
|---|---|
| >= 2.2.3 | 支持 IDLETIME |
| >= 3.0.0 | 支持 ENCODING 和 REFCOUNT |
| >= 4.0.0 | 支持 FREQ(LFU) |
*时间复杂度
O(1)