Redis-python Pipeline ?

以下代码来自 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

阅读 3.3k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题