Redis事务操作

Red事务操作

在Redis中的事务本质上其实是一组命令操作的集合,在事务执行的过程中,这些命令会被序列化,按照顺序依次执行。所以Redis中的事务具有的特点是:一次性、顺序性、排他性。

一次性:指的是Redis中的事务只执行一次,在该事务执行结束之后,这条事务的生命周期就结束了,再次执行事务时需要重新开启事务。

顺序性:指Redis的事务中的所有命令,都是按照先后顺序依次执行的。

排他性:指事务在对某一个数据进行操作的同时,其他事务或其他命令不能对这个数据进行操作R

Redis的事务并不是直接执行的,而是需要经过命令提交时候才能执行,Redis事务的执行流程图如下:(不具备隔离级别,Redis的单条命令具有原子性(也就是要么成功,要么失败),但是对于存在多条命令的Redis事务来说,不具备原子性,也就是说如果事务中有其他命令执行失败了,其他命令还会执行下去。)

                                                                                                              

1.正常执行事务

先使我们需要先使用MULTI命令来开启事务,开启事务时候就需要向该事务中加入命令,将命令入队,写入我想要执行的命令

而是返回一个QUEUED,表示入队成功然后在提交事务

开启事务

MULTI

命令入队

输入与获取数据

SET key value,GET key

提交事务

EXEC

2.取消事务执行

 在我们的事务没有提交之前,你想要取消执行这个事务,那么可以使用DISCARD命令,这样这个事务就会被自动取消,其中入队的命令也不会被执行,在下一次执行事务时还需要重新再开启事务!

开启事务

MULTI

命令入队

输入与获取数据

SET key value,GET key

取消事务执行

QUEUED

3.事务编译时异常

输入错误命令会发生编译时异常,这个时候会有错误提示,但是事务仍能提交,但是提交之后,整个事务队列中的命令都不会执行,

4.运行时异常

 运行时异常与编译时异常不同,运行时一样在编写代码时不会提示,一般情况下是我们的代码编写正确,但存在逻辑问题

如果事务中的命令存在运行时异常,那么在提交事务之后,不存在异常的命令同样会被执行,异常的命令会单独执行失败!

5.Redis乐观锁实现

乐观锁:认为什么时候都不会出错,所以什么时候都不会加锁,在更新数据的时候只需要去判断,在此期间是否有人修改过这个数据即可

我们需要使用一个命令去监控我们要操作的字段 WATCH key

但是在未监控的情况下,事务仍能提交成功!

监视

 WATCH key

正确操作

错误操作

在给字段添加监控的情况下通过事务去操作字段,如果在未提交时,有新的命令修改了字段值,那么事务一定会提交失败,

在实现乐观锁时,开启事务之前,一定要先给字段增加监控!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值