Redis - 从排序集中一次获取5个元素

时间:2016-05-10 14:59:43

标签: redis sortedset

我有一个实时增长的有序集合,它包含一些ID,我希望以相反的顺序一次检索5个ID。这基本上是为了实现分页。这些ID是Hashmap的关键。有没有办法使用redis ZSet操作一次有效地获取5个元素?

例如,在下面的排序集中,假设我想在“572c7d87e53156245a3fd167”之前获得5个元素,我怎么能这样做,因为新的ID可以在运行时的最后一个元素后继续添加?预期的结果应该给我ID 572c7c58e53156245a3fd166,572c7ad2e53156245a3fd165,572c746e1eeba6b059b08f1b,572c74531eeba6b059b08f1a和572c6fc9612ad65757cca4f9。

 1) "572b58c0dd319a1a4703eba8"
 2) "1462429760.8629999"
 3) "572c697e612ad65757cca4f7"
 4) "1462499582.6889999"
 5) "572c6a8e612ad65757cca4f8"
 6) "1462499854.056"
 7) "572c6fc9612ad65757cca4f9"
 8) "1462501193.927"
 9) "572c74531eeba6b059b08f1a"
10) "1462502355.5250001"
11) "572c746e1eeba6b059b08f1b"
12) "1462502382.313"
13) "572c7ad2e53156245a3fd165"
14) "1462504018.325"
15) "572c7c58e53156245a3fd166"
16) "1462504408.1370001"
17) "572c7d87e53156245a3fd167"
18) "1462504711.4200001"
19) "572c7da3e53156245a3fd168"
20) "1462504739.352"

1 个答案:

答案 0 :(得分:0)

一种选择是查看ZRANGEBYLEXZRANGEBYSCORE并使用偏移/计数。

然而,我通常为分页做的是创建一个新列表(原始列表的快照类型),它不会动态更改,并从那里加载数据。这样就不会想要追逐一个移动的目标。我只是设置了一个TTL而忘了它。