*Redis TOPK.INFO 命令

TOPK.INFO 返回 Top-K 概率数据结构的配置参数和运行时信息。


*语法

TOPK.INFO key

*参数说明

参数 类型 必填 说明
key String Top-K 结构键名

*返回值

  • Array:键值对列表,包含以下信息:
    • k:Top-K 列表容量
    • width:每个层级的计数器数量
    • depth:哈希层级数量
    • decay:衰减因子
    • count:当前 Top-K 列表中的元素数量(RedisBloom 2.4+)

*时间复杂度

O(1)

*

*示例

*查看 Top-K 信息

> TOPK.RESERVE mytopk 50 100 5 0.9
OK
> TOPK.INFO mytopk
 1) "k"
 2) (integer) 50
 3) "width"
 4) (integer) 100
 5) "depth"
 6) (integer) 5
 7) "decay"
 8) "0.90000000000000002"

*带元素的 Top-K 信息

> TOPK.ADD mytopk apple banana cherry
1) ""
2) ""
3) ""
> TOPK.INFO mytopk
 1) "k"
 2) (integer) 50
 3) "width"
 4) (integer) 100
 5) "depth"
 6) (integer) 5
 7) "decay"
 8) "0.90000000000000002"
 9) "count"
10) (integer) 3

*结合 MEMORY USAGE 评估内存

> TOPK.INFO hot_products
 1) "k"
 2) (integer) 10
 3) "width"
 4) (integer) 200
 5) "depth"
 6) (integer) 7
 7) "decay"
 8) "0.92500000000000004"
> MEMORY USAGE hot_products
(integer) 1736

*常见错误

错误 原因 解决
ERR wrong number of arguments 缺少 key 确保传入 key 参数
WRONGTYPE key 不是 Top-K 类型 确认 key 由 TOPK.RESERVE 创建
ERR key does not exist Top-K 结构不存在 先用 TOPK.RESERVE 初始化

*最佳实践

  • 适用场景:运维监控、内存评估、参数审计、容量规划
  • 结合 MEMORY USAGE 命令可精确计算 Top-K 结构的内存占用
  • 定期巡检 Top-K 结构的 k/width/depth 参数,确保与实际业务需求匹配
  • 衰减因子 decay 以浮点字符串返回,精度与创建时一致

*FAQ

Q1: TOPK.INFO 和 DEBUG OBJECT 有什么区别? A: TOPK.INFO 返回 Top-K 特有的业务参数(k、width、depth、decay);DEBUG OBJECT 返回通用的底层对象信息。

Q2: 为什么 decay 显示为一长串小数? A: 浮点数在内部以双精度存储,显示时保留了完整精度。业务上按创建时传入的值理解即可。

Q3: 如何修改已创建的 Top-K 参数? A: Top-K 结构不支持在线修改参数。需要 DEL 旧键后重新 TOPK.RESERVE,或创建新键迁移数据。