如何解决Redis排序集合绘制?

时间:2015-08-03 09:26:58

标签: redis node-redis

我正在使用Redis处理用户积分排名,我得:

  1. 存储用户点数
  2. 获取用户排名位置
  3. 所以我使用zincrby来更新排名位置,然后我使用zrevrangebyscore作为热门列表,zscorezrevrank来获取我需要的所有内容

    所以,当有一个抽奖案例(我实际上有很多)时,我不相信Redis标准可以排序。

    我的抽奖案例的获胜标准是日期,其中最早的是第一个。这些是我正在存储的MongoDB ID,所以我实际上可以从_id检索日期。

    所以,如果我想知道用户的实际排名

    1. 获取用户获得的积分,可能使用zrevrank
    2. 获得所有具有相同积分的用户。
    3. 考虑上限和下限。
    4. 按日期从Mongo ID获取具有相同分数的用户。
    5. 根据剩余的相同点绘制以及上边界和下边界来分配位置。
    6. 我将使用默认的node.js驱动程序对所有这些进行编码,因此它是我们正在谈论的Javascript代码。

      任何Redis命令如何帮助我实现这一目标?

1 个答案:

答案 0 :(得分:1)

由于排序集的分数可以是浮点值,因此您可以在其中存储时间戳和排名的组合,并使用小数点作为"分隔符"。这将为您提供基于日期的排名。

例如,如果我的排名为50且时间戳现在为1438594593,则根据以下"公式"

,该组中的分数将为50.856140541。

得分=排名+(1 - 时间戳/ 10 ^ 10)