为了提高性能,我尝试在Redis上执行MGET操作。我尝试过一次完成MGET,就像批量流一样。
from rediscluster import RedisCluster
ru = RedisCluster(startup_nodes=[{"host": "somecache.aws.com", "port": "7845"}],
decode_responses=True,
skip_full_coverage_check=True)
pipe = ru.pipeline()
# pipe.mget(keys)
for i in range(0, len(keys), batch_size):
temp_list = keys[i:i + batch_size]
pipe.mget(temp_list)
resp = pipe.execute()到目前为止,我得到的是错误
raise RedisClusterException("ERROR: Calling pipelined function {0} is blocked
when running redis in cluster mode...".format(func.__name__))
rediscluster.exceptions.RedisClusterException: ERROR:
Calling pipelined function mget is blocked when running redis in cluster mode...我想知道的是
发布于 2021-06-29 03:34:44
原来我们不能使用MGET与管道,下面是m最终的解决方案。
from rediscluster import RedisCluster
def redis_multi_get(rc: RedisCluster, keys: list):
pipe = rc.pipeline()
[pipe.get(k) for k in keys]
return pipe.execute()
if __name__ == '__main__':
rc = RedisCluster(startup_nodes=[{"host": host, "port": port}], decode_responses=True, skip_full_coverage_check=True)
keys = rc.keys(PREFIX + '*')
cache_hit = redis_multi_get(rc, keys)https://stackoverflow.com/questions/67686642
复制相似问题