如何使用分数列表从redis zset获取数据?

如何使用分数列表从redis zset获取数据?,redis,zset,Redis,Zset,我想从zset中获取数据,包括分数列表,例如 zadd zset 1 a 2 b 3 c 4 d 我想要一个像这样的命令 'zrange zset [2, 4]' 结果是 b, d 谢谢 有一个ZRANGEBYSCORE命令用于此操作。您可以使用一段代码来完成此操作,如: for score in score_list members = zrangebyscore(zset, score, score) member_list += members ZRANGEBYS

我想从zset中获取数据,包括分数列表,例如

zadd zset 1 a 2 b 3 c 4 d
我想要一个像这样的命令

'zrange zset [2, 4]'
结果是

b, d

谢谢

有一个
ZRANGEBYSCORE
命令用于此操作。

您可以使用一段代码来完成此操作,如:

for score in score_list
    members = zrangebyscore(zset, score, score)
    member_list += members 
ZRANGEBYSCORE的时间开销是O(LOG(N)+M),M是返回的成员数。所以我们可以说zrangebyscore的成本是O(LOG(N)),N是zset的大小。 所以总的时间成本是O(M*LOG(N)),M是分数列表的长度。这将是最好的时间成本

唯一不好的是我们在网络传输中花费了M RTT。我们可以使用管道来加速查询

说:

可以实现请求/响应服务器,以便即使客户端尚未读取旧响应,它也能够处理新请求。通过这种方式,可以在根本不等待回复的情况下向服务器发送多个命令,并最终在一个步骤中读取回复


因此,如果使用管道技术,只需花费一次RTT。我认为每种语言的redis客户端都实现了管道。祝你好运

你读过ZRANGE的文档吗?zrangebyscore只能获取[min,max]中的数据,但是,我想要一个像[2,4,7,11,…]这样的分数列表。你读过ZRANGE文档中关于WithScore的部分吗?zrangebyscore只能获取[min,max]中的数据,