我正在使用“redis py cluster”连接到我们的redis群集。我们需要在一次调用中从redis集群查询100个密钥。我使用redis hashtags(带{})将所有键散列到一个节点(例如:{feed}1、{feed}2、{feed}3是一些示例键)
我没有注意到顺序查询100个键和使用mget查询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集群版本:5.0.7,python:3.6,redis py集群:2.0.0
请帮忙,谢谢
使用多批次的命令不可能使用redis py的常规实现,因此必须执行其他方法或变通方法,以便以与正常redis py方法相同的方式支持mget命令
mget命令就是这些命令之一。如果您在这里查看此方法的当前集群实现https://github.com/Grokzen/redis-py-cluster/blob/master/rediscluster/client.py#L891,您将看到它通过模仿redis py上游版本的输入和输出来工作,但它更改了内部实现,因为对于每个键,您可能必须与不同的服务器进行对话
因此,为了使代码成为不更改代码的直接替换,集群mget将按顺序迭代每个键,并获取值,并以相同格式返回单个服务器案例的数据。在当前的实现中,不会有任何性能提升,但也没有其他方法可以以任何其他方式实现该方法,从而获得一些性能提升。更重要的是,实现该方法的工作方式相同,而不是具有相同的性能
相关问题 更多 >
编程相关推荐