首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis mget与redis-py-cluster客户端不能正常工作

Redis mget与redis-py-cluster客户端不能正常工作
EN

Stack Overflow用户
提问于 2020-04-18 18:57:18
回答 1查看 930关注 0票数 0

我使用" Redis -py- cluster“连接到我们的Redis集群。我们需要在一次调用中查询100个来自redis集群的key。我使用redis标签(带有{})将所有键散列到一个节点(例如:{feed}1、{feed}2、{feed}3是一些示例键)。

在这里,我没有注意到顺序查询100个键和使用mget.Sample代码查询100个键之间的时间差:

代码语言:javascript
复制
rconn = RedisCluster(startup_nodes=self.startup_nodes, decode_responses=True)
flist=['{feed}1','{feed}2','{feed}3','{feed}4'....'{feed}100']
time1 = time.time()
for i in range(1,len(flist)):
    feed_s = rconn.get(flist[i])
print("Feeds get one by one time:%f", time.time()-time1)
time2 = time.time()
feed_m = rconn.mget(flist)
print("Feeds mget time:%f", time.time()-time2)

redis-py-cluster是否支持mget?这是使用mget进行查询的正确方式吗?

版本: redis-cluster版本: 5.0.7,python: 3.6,redis-py-cluster:2.0.0

请帮帮忙,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-04-24 03:32:48

使用multislot的命令不可能使用来自redis-py的常规实现,因此必须执行其他方法或变通方法,以便以与普通redis-py方法相同的方式支持mget命令。

mget 命令是这些命令之一。如果您在此处查看此方法的当前集群实现 https://github.com/Grokzen/redis-py-cluster/blob/master/rediscluster/client.py#L891,您将看到它通过模仿输入和来自 redis-py 的上游版本的输出,但它会更改内部实现,因为您可能必须与不同的服务器通信。

因此,为了在不更改代码的情况下将代码作为临时替换,集群mget将按顺序迭代每个键,并获取值并以相同的格式返回单个服务器的数据。目前的实现不会有任何性能提升,但也没有其他方法来实现方法,这也会带来一些性能提升,更重要的是实现方法的工作方式相同,而不是具有相同的性能。

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

https://stackoverflow.com/questions/61287970

复制
相关文章

相似问题

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