Redis 事务与锁 --- 猿来如此容易

Redis 事务

redis事务就是一个命令执行的队列,将一系列预定义的命令包装成一个整体。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。

事务的基本操作

  • 开启事务 multi 设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中
  • 执行事务 exec 设定事务的结束位置,同时执行事务。与multi成对出现,成对使用
  • 取消事务 discard 终止当前事务的定义
  • 注意 加入事务的命令暂时加入到任务队列中,并没有立即执行,只有执行exec命令才开始执行

事务的注意事项

image-20201028162804369

image-20201028163524124

  • watch 监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行。监控一直持续到EXEC命令(事务中的命令是在EXEC之后才执行的,所以在MULTI命令后可以修改WATCH监控的键值)

  • unwatch 取消对所有key的监视

  • setnx lock-key value 设置一个公共锁,设置时有值就返回失败,无值返回设置成功

    • 对于设置成功的,拥有控制权,进行下一步具体业务操作
    • 对于返回失败的,不具有控制权,排队或者等待
  • 使用expire为锁添加时间限定,到时不释放,放弃锁

    • expire lock-key second
    • pexpire lock-key milliseconds

    image-20201028170129253

猜你喜欢

转载自blog.csdn.net/weixin_45877759/article/details/109337782