我在Redis中使用有序集。
排序集中数据的共同价值超过一百万。如何通过分区读取此有序集?我的意思是前100 000行和以下?
只有一个命令可以获取数据:smembers set
答案 0 :(得分:2)
您可以在排序集上使用ZRANGE
命令,并指定开始和停止以获得100,000个条目,然后指定100,001到200,000用于下一个ZRANGE
。
ZRANGE documentation on Redis.io
您提到使用smembers set
来获取数据,但这仅用于非排序集。如果您实际使用的是未排序的集合,则需要使用SPOP
并将计数定义为100,000。但是,这会同时删除所有这些条目。
答案 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
的游标,因此我们知道迭代已完成。