资讯

展开

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

作者:快盘下载 人气:

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

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

1. redis中的事务

1.1 Redis事务介绍

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

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

1.2 Multi、Exec、discard

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

创建一个事务分为三步:

开始事务编写命令提交/回滚事务

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

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

编写一个事务回滚的流程

1.3 Redis中事务的错误处理

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

Git

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

Linux

1.4 使用事务解决冲突问题

1.4.1 使用悲观锁的方式

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

文件存储

1.4.2 使用乐观锁的方式

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

Linux

1.5 Redis事务三特性

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

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!