*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 的引用计数

常见编码

  • 字符串:rawintembstr
  • 列表:ziplistquicklist
  • 集合:intsethashtable
  • 有序集合:ziplistskiplist
  • 哈希:ziplisthashtable

*示例

# 检查字符串编码
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)