实质
Redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体(队列),当执行时,一次性按照添加的顺序依次执行,中间不会被打断或者干扰。
基本操作
开启事务,设定事务的开启位置:multi
执行事务,与multi成对使用:exec
取消事务:discard
工作流程
操作注意事项
定义事务的过程中,命令格式输入错误怎么办?
如果定义的事务中所包含的命令存在语法错误,那么事务中所有的命令都将不执行。
定义事务的过程中,命令执行出现错误怎么办?
能够正确运行的命令会执行,运行错误的命令不会被执行,例如给string类型的key执行list类型的命令。
基于特定条件的事务执行
锁
给key添加监视锁:watch key1 [key …]
特点:在执行exec前如果key发生了变化,那么将终止事务
取消对所有key的监视:unwatch
分布式锁
设置公共锁:setnx lock-key value
特点:
- 如果有值则设置失败,不拥有控制权,不可以继续下一步操作,不会影响exec触发事务的执行
- 如果没值则设置成功,拥有控制权,可以继续下一步操作
为分布式锁添加限定时间
①expire lock-key value
②pexpire lock-key value