我有一个redis管道说:
r = redis.Redis(...).pipline()
假设我需要删除任何残留查询,如果存在于管道中而不执行。有什么像r.clear()
?
我有搜索文档和源代码,但我找不到任何内容。
答案 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
)的明显优势之外,此方法将负责中断当前正在进行的事务(如果有)并将连接返回到池。