搞懂Redis(四)-Redis事务

2022-04-26  本文已影响0人  高19

事务本质:一组命令的集合

  1. 数据库事务与Redis事务
  1. Redis事务
    Redis事务提供了一种将"多个命令打包,然后一次性,按顺序执行"的机制,并且事务在执行期间不会主动中断. 服务器在执行完事务中的所有命令后,才会执行客户端的其他命令.
    Redis中一个事务从开始到执行会经历开始事务(muiti).命令入队和执行事务(exec)三个阶段,事务中的命令在加入时都没有被执行,直到提交时才会开始执行(exec)一次性完成.
    一组命令中存在两种错误不同处理方式
    1)代码语法错误(编译时异常)所有命令都不执行
    2)代码逻辑错误(运行时错误),其他命令可以正常执行(该点不保证事务的原子性)
为什么Redis不支持回滚来保证原子性

优点:

事务监控

悲观锁: 认为什么 时候都会出现问题,无论什么操作都会加上锁
乐观锁: 认为什么时候都不会出现问题,所以不会上锁! 更新数据的时候去判断,在此期间是否有人修改过这个数据.
使用cas实现乐观锁
Redis使用watch key监控指定数据,相当于加乐观锁
watch保证事务只能在所有被监视键都没有被修改的前提下执行.如果这个前提不能满足的话,事务就不会执行.
watch执行流程


watch执行流程
上一篇下一篇

猜你喜欢

热点阅读