Redis事务总结

什么是Redis事务?

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

redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。

事务的基本操作

开启事务:multi    设定事务的开启位置,此命令执行后,后续所有的指令均加入到事务中

执行事务:exec   设定事务的结束位置,同事执行事务,与multi指令成对使用

取消事务:discard  终止当前事务的定义,发生在multi之后,exec之前

注意:加入事务的命令暂时进入到任务队列,并没有立即执行,当执行exec指令时队列中的指令才开始执行

 事务操作注意事项

1、如果在一个事务中的命令出现语法错误,那么所有的命令都不会执行

 2、如果在一个事务中出现运行错误,那么正确的命令会被执行

 3.redis不支持回滚,已经执行完毕的命令对应的数据不会自动回滚,需要程序员在代码中实现回滚,手动回滚参考方案如下:

         记录操作过程中被影响的数据之前的状态
                        单数据:string
                        多数据:hash、list、set、zset
         设置指令恢复所有的被修改的项
                        单数据:直接set(注意周边属性,例如时效)
                        多数据:修改对应值或整体克隆复制

事务锁

WATCH 命令是一个乐观锁,可以为 Redis 事务提供 check-and-set (CAS)行为。 可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行,监控一直持续到EXEC命令,watch命令必须在开始事务之前进行监控,不能在事务中监控某个key

 对 key 添加监视锁,在执行exec前如果key发生了变化,终止事务执行 watch key1 [key2……]
 取消对所有 key 的监视  unwatch

 

redis 应用基于状态控制的批量任务执行-watch监控某个状态或者数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值