2014-10-06 36 views

回答

3

命令列表只是一个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 = []

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

希望这是你的意思。

干杯 乔

+0

所以,我会继续弹出一个循环,直到command_stack为空?这意味着没有包装功能。 顺便说一句,我每次分配一个新的对象,但代码有一些线程,所以我只是想确定。 – 2014-10-06 13:53:25

+1

好吧,只要在线程内创建Pipeline实例就好。你不应该在线程之间传递管道。 – 2014-10-06 14:02:35

+0

感谢您的帮助!非常感激... – 2014-10-06 14:19:10

3

用途:

pipe.reset() 

不是忽略实现细节的明显优势,其他(如前command_stack提到的),这种方法会照顾中断当前进行的交易(如果有的话)并将连接返回到池。