redis 事务
事务本质就是 一组命令的集合 ,一个事务所有命令都会被序列化,在事务执行中 都会按照序列执行。 一次性,顺序性,排他性!
redis 没有隔离级别的概念!
执行程序:
开始事务(mutil)
执行的一些命令(。。。)
结束事务()
redis 的单条命令具有原子性,事务不保证原子性
编译错误 事务中所有命令不执行!
运行时错误 事务中报错的抛异常 成功的执行成功
redis的监控watch
乐观锁 : 任务所有的都能正常执行不会出问题;很乐观 通过监控 mysql 是version redis 通过watch 来监控这个数据 是否有变化来进行更新数据
悲观锁 : 是每一个执行命令 都要上锁;
流程
1.multi,开启Redis的事务,置客户端为事务态。
2.exec,提交事务,执行从multi到此命令前的命令队列,置客户端为非事务态。
3.discard,取消事务,置客户端为非事务态。
4.watch,监视键值对,作用时如果事务提交exec时发现监视的监视对发生变化,事务将被取消。
5. 执行失败的时候 需要重新获取值的话 需要用到 unwatch 来先解除锁
redis 实现乐观锁的文章
https://cloud.tencent.com/developer/article/1368533