首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过评分列表从redis zset中获取数据?

如何通过评分列表从redis zset中获取数据?
EN

Stack Overflow用户
提问于 2017-07-17 17:35:29
回答 2查看 1.4K关注 0票数 2

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

代码语言:javascript
复制
zadd zset 1 a 2 b 3 c 4 d

我想要一个像这样的命令

代码语言:javascript
复制
'zrange zset [2, 4]'

结果就是

代码语言:javascript
复制
b, d

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-07-17 21:34:18

有一个ZRANGEBYSCORE命令就可以做到这一点。

票数 0
EN

Stack Overflow用户

发布于 2017-07-20 10:46:42

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

代码语言:javascript
复制
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。我们可以使用流水线来加速查询。

redis document说:

可以实现请求/响应服务器,以便即使客户端尚未读取旧的响应,它也能够处理新的请求。这样,就可以向服务器发送多个命令,而根本不需要等待回复,并最终在单个步骤中读取回复。

所以如果你使用流水线技术,它只需要一次RTT时间。我认为每种语言的redis客户端都已经实现了流水线。祝你好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45140647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档