*Redis TOPK.LIST 命令

TOPK.LIST 返回当前 Top-K 概率数据结构中排名前列的元素列表。


*语法

TOPK.LIST key [WITHCOUNT]

*参数说明

参数 类型 必填 说明
key String Top-K 结构键名
WITHCOUNT Flag 同时返回每个元素的近似计数

*返回值

  • Array:不带 WITHCOUNT 时,返回 Top-K 中的元素名列表
  • Array:带 WITHCOUNT 时,返回元素名和计数的交替列表

*时间复杂度

O(k),k 为 Top-K 容量。


*示例

*查看 Top-K 元素列表

> TOPK.RESERVE mytopk 3 100 5 0.9
OK
> TOPK.ADD mytopk apple banana cherry apple banana apple
1) ""
2) ""
3) ""
4) ""
5) ""
6) ""
> TOPK.LIST mytopk
1) "apple"
2) "banana"
3) "cherry"

*带计数查看

> TOPK.LIST mytopk WITHCOUNT
1) "apple"
2) (integer) 3
3) "banana"
4) (integer) 2
5) "cherry"
6) (integer) 1

*空 Top-K 列表

> TOPK.RESERVE emptytopk 5 100 5 0.9
OK
> TOPK.LIST emptytopk
(empty array)

*常见错误

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

*最佳实践

  • 适用场景:获取当前热门元素排行、展示排行榜、生成高频词报告
  • 使用 WITHCOUNT 可同时获取近似频率,无需额外调用 TOPK.COUNT
  • 返回的元素顺序基于内部计数器,通常按频率从高到低排列
  • 列表长度不超过创建时指定的 k 值,若数据稀疏可能少于 k 个

*FAQ

Q1: TOPK.LIST 返回的顺序是频率从高到低吗? A: 通常按近似频率降序排列,但由于概率数据结构的特性,极小概率下顺序可能不完全精确。

Q2: 返回的元素数量一定等于 k 吗? A: 不一定。若添加的元素总数少于 k,或大量元素计数相近,返回数量可能小于 k。

Q3: WITHCOUNT 返回的计数是精确值吗? A: 不是,是近似计数。Top-K 作为概率数据结构,计数存在固有误差,适合趋势判断。