redis中的事务

redis中的事务


前言

在redis中,单条命令具有原子性,但它的事务没有原子性,不可回滚,其实现可以借助multi...exec命令,事务的取消可以借助discard命令。

实践

multi开启后,接下来的命令都会进入队列中,而不会马上执行。

在这里插入图片描述

在新开的端口中连接进入后,get上图中key为test2的值,此时是取不到的。

在这里插入图片描述

提交事务后,才会执行(就一个批处理的过程)

在这里插入图片描述

事务的取消。

在这里插入图片描述

如果执行错误不会回滚。(这里的错误分两种,如果是你的命令本身就有问题,类似编译时异常,则整个事务是没法执行成功的,但如果是运行时异常,则执行可以成功)
- 这里的hset命令错误,整个事务没法执行

在这里插入图片描述

- 运行错误,没法回滚

在这里插入图片描述


总结

(1) redis的事务里头,单条命令可以保证原子性,多个命令的批处理过程是不能保证原子性的。(2)redis的事务对于运行时的异常无法回滚(3)redis没有隔离级别的概念。(4)redis的事务对于运行异常没法回滚,但有一种情况除外,即运行是,检测到key已被锁定,这个在下一篇文章展开描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

legendaryhaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值