我使用" Redis -py- cluster“连接到我们的Redis集群。我们需要在一次调用中查询100个来自redis集群的key。我使用redis标签(带有{})将所有键散列到一个节点(例如:{feed}1、{feed}2、{feed}3是一些示例键)。
在这里,我没有注意到顺序查询100个键和使用mget.Sample代码查询100个键之间的时间差:
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
请帮帮忙,谢谢!
发布于 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将按顺序迭代每个键,并获取值并以相同的格式返回单个服务器的数据。目前的实现不会有任何性能提升,但也没有其他方法来实现方法,这也会带来一些性能提升,更重要的是实现方法的工作方式相同,而不是具有相同的性能。
https://stackoverflow.com/questions/61287970
复制相似问题