前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis--Redis事务及错误处理方式

Redis--Redis事务及错误处理方式

原创
作者头像
Java学术趴
发布2022-10-06 15:35:50
3780
发布2022-10-06 15:35:50
举报
文章被收录于专栏:Java全栈·Java全栈·

👨‍🎓作者:Java学术趴 🏦仓库:GithubGitee ✏️博客:CSDN掘金InfoQ云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。

☠️每日毒鸡汤:一件事你犹豫去不去做,那就是该立即动身做的。

1. Redis中的事务

1.1 Redis事务介绍

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

Redis中的事务:就是把所有要执行的操作都按照顺序排列起来,按照顺序一个个的执行,每一个操作的执行不会干扰到其他操作。

1.2 Multi、Exec、discard

  • 从输入 Mulit 命令开始,输入的命令都会依次进入命令队列中,但不会执行。直到输入 Exec 之后,Redis回将之前的命令队列中的命令依次执行。
  • 组队的过程中可以通过 discard 来放弃组队。
  • Exec :类似于 Mysql中的提交事务, discard : 类似于Mysql中的回滚事务。

创建一个事务分为三步:

  1. 开始事务
  2. 编写命令
  3. 提交/回滚事务

编写一个事务提交成功的流程

编写一个事务回滚的流程

1.3 Redis中事务的错误处理

第一种:在组队中,如果某个命令出现错误,执行时整个队列中的命令都会被取消

第二种:如果执行阶段某个命令出现了错误,则只有出现错误的命令不会被执行,而其他的命令都会执行。

1.4 使用事务解决冲突问题

1.4.1 使用悲观锁的方式

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

1.4.2 使用乐观锁的方式

乐观锁:顾名思义,就是很乐观的锁,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号的机制。乐观锁适用于多读的场景,这样可以提高吞吐量, Redis就是利用这种 check-and-set 机制实现事务的。

1.5 Redis事务三特性

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Redis中的事务
    • 1.1 Redis事务介绍
      • 1.2 Multi、Exec、discard
        • 1.3 Redis中事务的错误处理
          • 1.4 使用事务解决冲突问题
            • 1.4.1 使用悲观锁的方式
            • 1.4.2 使用乐观锁的方式
          • 1.5 Redis事务三特性
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档