1.Redis 的事务
1.1 事务简介
Redis 事务是一个单独的隔离操作,事务中的所有命令都会序列化、按顺序执行。事务在执行的过程中,不会被其他客户端发送的命令打断。
主要作用:串联多个命令防止别的命令插队。
从输入 Multi 命令开始,输入的命令都会一次进入命令队列中,但不会执行,直到输入 Exec 后,Redis 会将之前的命令队列中的命令依次执行。
组队的过程可以通过 discard 来终止
1.2 事务的错误处理
组队中某个命令出现了错误,执行时整个队列都会被取消
如果执行阶段某个命令报告错误,则只要报错的命令不执行,而其他的命令照常执行,不进行回滚。
2 锁机制
案列:
一个请求想给金额减 8000
一个请求想给金融减 5000
一个请求想给金额减 1000
2.1 悲观锁
2.2 乐观锁
2.3 WATCH key [key ...]
在执行 multi 之前,先执行 watch key1 ....可以监视多个 key,如果在事务执行之前这些 key 被其他命令改动,那么改事务将被打断执行。
2.4 unwatch
取消 watch 命令的监视
如果在执行 watch 命令之后,exec 命令或 discard 命令先被执行,那么此 UNwatch 命令将不会执行
3.Redis 事务的特性
- 单独的隔离操作:事务中的所有命令都会序列化执行,执行过程不会被其他客户端的请求打断
- 没有隔离级别的概念:队列中的命令在没有提交前都不会被实际执行
- 不保证原子性:事务中如果有命令执行失败,之后的命令仍然会被执行,即没有回滚操作
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于