【问题标题】:Implementing Dense Rank with Redis Sorted Sets使用 Redis 排序集实现 Dense Rank
【发布时间】:2013-10-14 17:07:00
【问题描述】:

我正在尝试实现一个带有排名的排行榜,数据在 Redis 中存储为排序集。我想弄清楚的部分是如何实现密集(即“1-2-2-3”)排名,例如,用户的排名是这样的:

Score   User    Rank
---------------------
22      user1   1
21      user2   2
21      user3   2
21      user4   2
20      user5   3
20      user6   3

这个答案:https://*.com/a/14944280/2177几乎是我需要的,但它相当于“1-2-2-4”排名,这对我的应用程序来说是不可取的,例如:

1-2-2-4 Ranking 
Score   User    Rank
---------------------
22     user1    1
21     user2    2
21     user3    2
21     user4    2
20     user5    5
20     user6    5

这似乎是一个相当常见的用例。有没有人在 Redis 中成功实现过这样的东西,如果有,如何实现?

【问题讨论】:

标签: redis ranking sortedset


【解决方案1】:

我最终做的是添加第二个仅包含唯一分数的排序集,然后我可以查询它们在密集排名中各自的位置。

【讨论】:

  • 你是如何实现这个的?唯一分数集将具有值 [22, 21, 20],这意味着唯一分数 20 的排名为 3,但您需要它为 5。我很困惑。我在这里错过了什么吗?
  • @RegMem 我认为您的意思是 CompetitionRanking 而不是 DenseRanking
最近更新 更多