我想用分数列表从zset中获取数据,例如
zadd zset 1 a 2 b 3 c 4 d我想要一个像这样的命令
'zrange zset [2, 4]'结果就是
b, d谢谢!
发布于 2017-07-17 21:34:18
有一个ZRANGEBYSCORE命令就可以做到这一点。
发布于 2017-07-20 10:46:42
您可以使用一段代码来完成此操作,如下所示:
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* score_list (N)),其中M是score_list的长度。这将是最好的时间成本。
唯一不好的是我们在网络传输上花费了M个RTT。我们可以使用流水线来加速查询。
可以实现请求/响应服务器,以便即使客户端尚未读取旧的响应,它也能够处理新的请求。这样,就可以向服务器发送多个命令,而根本不需要等待回复,并最终在单个步骤中读取回复。
所以如果你使用流水线技术,它只需要一次RTT时间。我认为每种语言的redis客户端都已经实现了流水线。祝你好运!
https://stackoverflow.com/questions/45140647
复制相似问题