Python 2.7 py:如何刷新管道中的所有查询

Python 2.7 py:如何刷新管道中的所有查询,python-2.7,redis,Python 2.7,Redis,我有一个redis管道,上面说: r = redis.Redis(...).pipline() 假设我需要删除任何剩余查询(如果存在于管道中而不执行)。是否有类似于r.clear()的内容 我有搜索文档和源代码,但找不到任何东西。命令列表只是一个python列表对象。您可以像这样检查它: from redis import StrictRedis r = StrictRedis() pipe = r.pipeline() pipe.set('KEY1', 1) pipe.set('KEY2',

我有一个redis管道,上面说:

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\u stack=[]

如果有很多,只需将一个新管道对象重新指定给管道即可

希望这就是你的意思

干杯 乔使用:

pipe.reset()

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

因此,我将一直在循环中弹出,直到command\u stack为空?这意味着它没有包装器函数。顺便说一句,我每次都分配一个新对象,但是代码有一些线程,所以我只是想确定一下。只要你在线程中创建管道实例就可以了。您不应该在线程之间传递管道。