本片笔记适用于 b站尚硅谷 课程 Redis 6 入门到精通 超详细 教程

  • 事物,锁机制
  • 事物冲突问题
  • redis事物三特性
  • 持久化框架
  • Redis主从复制
  • Redis集群
  • Redis应用问题解决

事物,锁机制:

Redis事物:一个单独的隔离操作;事物中所有命令都会序列化,按顺序执行。事物执行过程中不会被其他客户端发送过来的命令请求打断

Redis事物主要作用就是串联多个命令防止别的命令插队

Multi | Exec | discard

输入Multi开启事务,此时被成为组队阶段,输入的命令不会马上执行,而是依次进入命令队列,直到输入Exec后,将命令队列中命令依次执行,组队过程中可以通过discard来放弃组队

image-20220817101242222

错误情况:

  1. 组队时命令发生错误,事物无法执行Exec后的命令语句,一个都不执行
  2. 组队时无误,执行时出现部分错误,错误的不执行,其他的执行

为什么需要做成事物:

同一份数据被多处调用时,可能会使得值变得不合理,例如多人登录同一台TB账户购买东西,余额同时读取后再依次修改是不合理的

事务冲突问题:

悲观锁:

每次拿数据时都认为别人会修改,所以每次拿取数据时就上锁,其他人拿数据时就会black(阻塞)直至开锁,牺牲性能换效果

乐观锁:

添加版本信息,仅在修改信息时匹配版本是否一致,一致则成功修改,否则更新数据再执行

image-20220817103825221

WATCH K:

在执行multi之前,先执行watch k监视一个或多个key值,如果在事物执行之前这个key被改动,那么事务将会被打断

Redis事务的三特性:

  • 单独的隔离操作:事务中所有命令都会序列化,按顺序执行。事务在执行过程中不会被其他客户端发送的命令请求打断
  • 没有隔离级别概念:队列中的命令没有提交之前都不会实际执行,因为事务提交前任何指令都不会执行
  • 不保证原子性:事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚