*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,或创建新键迁移数据。