python redis pipeline 堆积_Redis Pipeline python

问题

简介: 以下代码来自 redis实战 一书中某个小节; 代码是python实现,其中如果pipeline()不加任何参数,或者是pipeline(True)的形式,那么客户端将使用MULTI EXEC包裹起来用户要执行的所有命令. 我的问题是: 既然pipeline(True) 实际将 要被执行的代码用MULTI EXEC包括起来 那么下面代码先不考虑业务,pipeline执行的时候会用MULTI EXEC包裹那些代码?

//

// 释放所的操作

// conn: 连接

// lockname: 锁的名字

// identify: 锁的Value值(128位)

def release_lock(conn,lockname,identify):

pipe = conn.pipeline(True) //Pipeline 执行的时候用MULTI EXEC包含那些代码?

lockname = 'lock' + lockname

while True:

try:

pipe.watch(lockname)

if pipe.get(lockname) == identify:

pipe.multi()

pipe.delete(lockname)

pipe.execute()

return True

pipe.unwatch()

break

except redis.exceptions.WatchError:

pass

return False

修改代码

pipeline(False) 含义是:客户端将向 事务那样把所有要执行的命令收集起来, 只是不会把这些命令用 MULTI EXEC 包裹起来. 那么上面的的pipeline 能写成 pipeline(False) 么,基于上面已经有写pipe.multi

期待的结果

给出伪代码 Or 说说你的理解.

故事与它;企鹅TUX,土拨鼠,海豚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值