有没有办法批量读取 redis 列表?

Is there a way for reading a redis list in bulks?

假设我们有一个包含数十万个元素的redis 集合。由于 smember 命令进行预加载,它仅通过此 一个命令 获取所有元素,因此它消耗了太多时间。我想知道有没有办法以批量或流的形式读取 Redis 数据?

批量

来自 Redis Set 数据结构的数据可以使用 SSCAN 命令批量读取。

> sadd set a
(integer) 1
> sadd set b
(integer) 1
> sadd set c
(integer) 1

> SMEMBERS set
1) "c"
2) "b"
3) "a"

> SSCAN set 0 COUNT 2
1) "1"                  // <-- cursor for following SSCAN
2) 1) "b"
   2) "a"
> SSCAN set 1 COUNT 2   // <-- cursor from previous SSCAN
1) "0"                  // <-- cursor=0 indicating complete iteration
2) 1) "c"

Redis 不直接支持流式传输 Set 结构数据。