Redis的事务和锁机制

Redis的事务和锁机制

这里是允谦的学习之路
如果对你有帮助,给博主一个免费的点赞以示鼓励把QAQ
博客主页 允谦的学习小屋
⭐️更多文章‍请关注允谦主页
文章发布日期:2022.03.01
java学习之路!
欢迎各位点赞评论收藏⭐️
冲冲冲、持续更新

文章目录

  • Redis的事务和锁机制
    • 1、Redis的事务定义
    • 2、Multi、Exec、discard
    • 3、事务的错误处理
    • 4、事务冲突的问题
      • 4.1悲观锁
      • 4.2 乐观锁
      • 4.3 WATCH key[key ....]
    • 5、Redis事务三特性:

1、Redis的事务定义

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

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

2、Multi、Exec、discard

从输入Multi命令开始,输入的命令都会和一次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令一次执行。

组队的过程中可以通过discard来放弃组队。

3、事务的错误处理

Redis的事务和锁机制_第1张图片

取消组队的情况
Redis的事务和锁机制_第2张图片

组队的过程中,有一个错误,上面的所有指令都不能执行
Redis的事务和锁机制_第3张图片

组队时成功,运行时出错,不影响别的指令执行
Redis的事务和锁机制_第4张图片

4、事务冲突的问题

Redis的事务和锁机制_第5张图片

4.1悲观锁

悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

Redis的事务和锁机制_第6张图片

4.2 乐观锁

Redis的事务和锁机制_第7张图片

4.3 WATCH key[key …]

在执行multi之前,先执行watch key [key…] 可以监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。

5、Redis事务三特性:

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

交前任何指令都不会被实际执行

  • 不保证原子性:
    事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚

你可能感兴趣的:(Redis,redis,java,缓存)