在redis中使用管道进行批量处理(python示例)

时间:2016-11-18 12:22:40

标签: python redis pipeline

我试图使用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()

这是对的吗?

1 个答案:

答案 0 :(得分:1)

了解pipelining是什么/做了什么,然后你就会明白为什么这不起作用 - 直到你execute管道,其中没有任何命令会被发送到服务器。这使得你的条件陈述错过了你想到的目的。

相关问题