我有一个Redis的管道说:redis.py:如何刷新所有查询在一个管道
r = redis.Redis(...).pipline()
想我需要除去残留的查询,如果出现在管道不执行。有什么像r.clear()
?
我有搜索文档和源代码,我找不到任何东西。
我有一个Redis的管道说:redis.py:如何刷新所有查询在一个管道
r = redis.Redis(...).pipline()
想我需要除去残留的查询,如果出现在管道不执行。有什么像r.clear()
?
我有搜索文档和源代码,我找不到任何东西。
命令列表只是一个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 = []
。
如果有很多,你可以简单地重新分配一个新的管道对象管道。
希望这是你的意思。
干杯 乔
用途:
pipe.reset()
不是忽略实现细节的明显优势,其他(如前command_stack
提到的),这种方法会照顾中断当前进行的交易(如果有的话)并将连接返回到池。
所以,我会继续弹出一个循环,直到command_stack为空?这意味着没有包装功能。 顺便说一句,我每次分配一个新的对象,但代码有一些线程,所以我只是想确定。 – 2014-10-06 13:53:25
好吧,只要在线程内创建Pipeline实例就好。你不应该在线程之间传递管道。 – 2014-10-06 14:02:35
感谢您的帮助!非常感激... – 2014-10-06 14:19:10