如何按分区读取排序集?
How to read sorted set by partitions?
我在 Redis 中使用排序集。
sorted set 中数据的常见值超过一百万。如何按分区读取这个排序集?我的意思是前 100 000 行及以下?
取数据的命令只有一个:smembers set
您可以在排序集上使用 ZRANGE
命令并指定开始和停止以获得 100,000 个条目,然后为下一个 ZRANGE
.
指定 100,001 到 200,000
ZRANGE documentation on Redis.io
您提到使用 smembers set
获取数据,但这仅用于非排序集。如果您实际上使用的是非排序集,则需要使用 SPOP
并将计数定义为 100,000。但是,这会同时删除所有这些条目。
您可以使用 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
returns 一个 7
的游标,然后提供给第二次调用 SSCAN
。第二次调用 returns 0
的游标,因此我们知道迭代已完成。
我在 Redis 中使用排序集。
sorted set 中数据的常见值超过一百万。如何按分区读取这个排序集?我的意思是前 100 000 行及以下?
取数据的命令只有一个:smembers set
您可以在排序集上使用 ZRANGE
命令并指定开始和停止以获得 100,000 个条目,然后为下一个 ZRANGE
.
ZRANGE documentation on Redis.io
您提到使用 smembers set
获取数据,但这仅用于非排序集。如果您实际上使用的是非排序集,则需要使用 SPOP
并将计数定义为 100,000。但是,这会同时删除所有这些条目。
您可以使用 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
returns 一个 7
的游标,然后提供给第二次调用 SSCAN
。第二次调用 returns 0
的游标,因此我们知道迭代已完成。