redis.py:如何刷新管道中的所有查询

时间:2014-10-06 13:05:51

标签: python-2.7 redis

我有一个redis管道说:

r = redis.Redis(...).pipline()

假设我需要删除任何残留查询,如果存在于管道中而不执行。有什么像r.clear()

我有搜索文档和源代码,但我找不到任何内容。

2 个答案:

答案 0 :(得分:4)

命令列表只是一个python列表对象。您可以像这样检查它:

from redis import StrictRedis
r = StrictRedis()
pipe = r.pipeline()
pipe.set('KEY1', 1)
pipe.set('KEY2', 2)
pipe.set('KEY3', 3)
pipe.command_stack
[(('SET', 'KEY1', 1), {}), (('SET', 'KEY2', 2), {}), (('SET', 'KEY3', 3), {})]

尚未将其发送到服务器,因此您只需弹出()或删除您不想要的命令即可。您也可以只指定一个空列表pipe.command_stack = []

如果有很多,你可以简单地将一个新的Pipeline对象重新分配给管道。

希望这就是你的意思。

干杯 乔

答案 1 :(得分:4)

使用:

pipe.reset()

除了忽略实现细节(例如之前提到的command_stack)的明显优势之外,此方法将负责中断当前正在进行的事务(如果有)并将连接返回到池。