我试图使用python客户端清除我在redis中实现的流水线概念。请看以下示例:
my_server = redis.Redis(connection_pool=POOL)
for obj_id in list_of_obj_ids:
hash_name="n:"+str(obj_id)
sorted_set = "s:"+str(obj_id)
if my_server.exists(hash_name):
my_server.hset(hash_name,'val',0)
if my_server.zcard(sorted_set):
my_server.zadd(sorted_set, hash_name, time.time())
即。我通过迭代for循环来更新多个哈希值。如何通过流水线完成此类批量更新?根据我的阅读,以下是我的想法:
my_server = redis.Redis(connection_pool=POOL)
p = my_server.pipeline()
for obj_id in list_of_obj_ids:
hash_name="n:"+str(obj_id)
sorted_set="s:"+str(obj_id)
if p.exists(hash_name):
p.hset(hash_name,'val',0)
if p.zcard(sorted_set):
p.zadd(sorted_set, hash_name, time.time())
p.execute()
这是对的吗?
答案 0 :(得分:1)
了解pipelining是什么/做了什么,然后你就会明白为什么这不起作用 - 直到你execute
管道,其中没有任何命令会被发送到服务器。这使得你的条件陈述错过了你想到的目的。