如何读取分区的排序集?

时间:2016-12-08 17:29:17

标签: redis node-redis

我在Redis中使用有序集。

排序集中数据的共同价值超过一百万。如何通过分区读取此有序集?我的意思是前100 000行和以下?

只有一个命令可以获取数据:smembers set

2 个答案:

答案 0 :(得分:2)

您可以在排序集上使用ZRANGE命令,并指定开始和停止以获得100,000个条目,然后指定100,001到200,000用于下一个ZRANGE

ZRANGE documentation on Redis.io

您提到使用smembers set来获取数据,但这仅用于非排​​序集。如果您实际使用的是未排序的集合,则需要使用SPOP并将计数定义为100,000。但是,这会同时删除所有这些条目。

SPOP documentation on Redis.io

答案 1 :(得分:0)

您可以使用SSCAN以递增方式遍历未排序集的元素。从游标0开始,并在后续调用中使用返回的游标,直到再次返回0

pantalones:6379> SSCAN five-characters 0 COUNT 3
   1) "7"
   2) 1) "d"
      2) "e"
      3) "a"
      4) "c"
pantalones:6379> SSCAN five-characters 7 COUNT 3
   1) "0"
   2) 1) "b"

在此示例中,第一次调用SSCAN会返回7的光标,然后将其提供给SSCAN的第二次调用。第二个调用返回0的游标,因此我们知道迭代已完成。

请参阅SSCAN documentation on Redis.io