如何按分区读取排序集?

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。但是,这会同时删除所有这些条目。

SPOP documentation on Redis.io

您可以使用 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 的游标,因此我们知道迭代已完成。

SSCAN documentation on Redis.io