【问题标题】:Get key and score of the last inserted item in Redis sorted set获取 Redis 排序集中最后插入项的 key 和 score
【发布时间】:2016-04-16 08:20:25
【问题描述】:

现在我对我的解决方案进行了一些更改。我现在想要得到的是给定键范围的键-> 分数对。例如: 设置 = [1:3、2:5、7:8、10:1] 对于范围 [2, 8] 我想得到: [2: 5, 7: 8]

如何从 Redis 排序集中获取最后插入的(或最后 5 个)项目。我尝试了 zrange 函数,但它在排序时考虑了分数。我能以某种方式让它们按插入时间排序吗?或者,钥匙?

我考虑过使用列表,但我还需要按键访问元素,这就是为什么我想使用排序集(更好的访问时间复杂度)。

谢谢!

【问题讨论】:

  • 你使用的分数意味着什么?也许你可以使用时间戳作为分数?
  • 是的,分数很重要。我编辑了这个问题。现在,我想根据键范围获得间隔。 zrange 根据分值给出结果。
  • 也许您可以添加一个 lua 脚本来执行此操作,一旦您收到请求,您将数据放入两个 zset 结构中,例如在“键”上构建索引,就像我们在 RDMS 中所做的那样。您也会按分数获得射程吗?如果没有,也许你可以使用一些算法来添加带有分数的 keyinfo。

标签: redis


【解决方案1】:

您可以使您的分数成为一个复合值:时间戳和原始分数的串联。

前 10 位数字是插入项目时的时间戳。 x 最后一位是项目的分数(意味着您必须在开头添加一些 0 才能始终具有相同的位数)。

示例:148594228400023

然后,你可以用zrevrangebyscore获取最后5个插入的item,并检索item的score。

【讨论】:

    猜你喜欢
    • 2015-04-14
    • 2016-12-19
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多