Redis 事务 watch实现乐观锁

简介

Redis 事务就是一组命令的集合,在事务提交时一次性顺序执行,其他客户端提交的命令不会插入到事务执行队列中。
一次性、顺序性、排他性

Redis事务没有隔离级别,事务中的命令被加入执行队列时,并不会实际执行,只有提交了事务才会执行,此时事务内的查询无法看到之前事务内的更新

相关命令

watch key1 key2 … : 监视一或多个key,如果在事务提交之前,被监视的key发生改动,则事务执行失败 ( 类似乐观锁 )
multi : 开始一次事务
exec: 执行事务
discard : 取消事务,放弃执行事务中的所有命令
unwatch : 取消watch对所有key的监控

Redis事务不保证原子性

当事务中有异常发生时,可能全部失败,也可能部分失败

部分失败的情况

当事务队列中有命令出现逻辑错误时,其余命令可以正常执行
例:incr了一个非数字

在这里插入图片描述

全部失败的情况

当Redis命令出现语法错误时,事务队列中所有命令都不会成功执行

在这里插入图片描述

Watch实现乐观锁

使用watch监听相应的键,这样在事务执行时,若正在监听的键值发生改变时,则事务执行失败,所有命令都不生效
在这里插入图片描述
第二个连接在事务未执行时修改了money的值,则该事务全部失败
在这里插入图片描述
当然事务执行完毕别忘了解除所有监听
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值