排序集的“全局”计算

Run*_*tle 4 redis

使用排序集,是否有一种简便的方法来计算“全局”值,例如集合中所有分数的平均值,中位数,最大值,最小值等,还是我总是需要提取分数并执行我自己计算(有点痛苦...)?

plu*_*us- 5

您可以使用ZCARD和ZRANGE(当然要打分)来完成所有操作。

  • 最小值:索引0的ZRANGE
  • 最大值:最大索引的ZRANGE(ZCARD值)
  • 中位数:ZRANGE位于中间索引(ZCARD / 2)
  • 平均:您可以将所有分数的总和存储在另一个计数器中,然后将其除以ZCARD值


sep*_*010 1

没有简单的方法可以做到这一点。聚合命令并不多。

编辑:如果这是你必须做的,也许排序集(甚至redis)不是正确的选择。您能详细说明一下您的用例吗?