*Redis OBJECT FREQ 命令

OBJECT FREQ 返回指定 key 在 LFU(Least Frequently Used)淘汰策略下的访问频率计数。


*语法

OBJECT FREQ key

*参数说明

参数 类型 必填 说明
key String 键名

*返回值

  • Integer:LFU 访问频率计数(0 ~ 255 之间)
  • Nil:key 不存在

*时间复杂度

O(1)

*

*示例

*查看 key 的 LFU 频率

> SET mykey "value"
OK
> OBJECT FREQ mykey
(integer) 5
> GET mykey
"value"
> OBJECT FREQ mykey
(integer) 6

*多次访问后频率提升

> SET hotkey "hot"
OK
> GET hotkey
"hot"
> GET hotkey
"hot"
> GET hotkey
"hot"
> OBJECT FREQ hotkey
(integer) 15

*key 不存在的场景

> OBJECT FREQ notexist
(nil)

*常见错误

错误 原因 解决
ERR wrong number of arguments 未提供 key 参数 补充 key 参数
返回 (nil) key 不存在 确认 key 是否存在

*最佳实践

  • 仅在 maxmemory-policy 配置为 allkeys-lfuvolatile-lfu 时,OBJECT FREQ 才有实际意义
  • LFU 频率用于识别热点 key,可辅助缓存预热分析
  • 生产环境建议结合 OBJECT IDLETIMEOBJECT FREQ 综合判断 key 的价值
  • 频率值是 8 位对数计数器,非精确访问次数,但足够用于淘汰决策

*FAQ

Q1: OBJECT FREQ 返回的值是什么意思? A: 返回 0 ~ 255 的整数,表示 key 在 LFU 策略下的访问频率。值越高,说明该 key 被访问越频繁,越不容易被淘汰。

Q2: 为什么配置为 LRU 策略时 OBJECT FREQ 也有返回值? A: 即使当前使用 LRU 策略,Redis 内部对象也存储 LFU 字段(Redis 4.0+ 统一对象结构),但数值无实际淘汰意义。切换策略时,该字段会立即生效。

Q3: LFU 频率会衰减吗? A: 会。Redis LFU 实现会随时间衰减访问频率,避免旧热点 key 长期占用内存。衰减速度可通过 lfu-decay-time 配置调整。