Redis的事务是否是原子性的?

今天看书遇到一个redis事务的描述,如下:

《Redis深度历险 核心原理与应用实践》
Redis的事务是否是原子性的?

但是在另一个菜鸟教程中,是这么描述的:
www.runoob.com/redis/redis-transac...
Redis的事务是否是原子性的?

是我对这俩段理解有误吗?

yema
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 5

redis事务不是原子性,咱们理解的MySQL的事务原子性是一个最小单位,要么0要么1不可能0.5。但是reids的事务只是单纯的命令集合而已

3年前 评论
yema (楼主) 3年前
wdnmd 3年前

官网写了,有原子性。redis.io/topics/transactions
file
另外,原子性就是指一堆命令要么都执行,要么都不执行。和 MySQL 中提到的原子性是一个意思。

3年前 评论
勇敢的心 3年前

上面引号中的原子性我理解是指事务中的指令执行的时候不会有其他非事务中的指令插入队执行

至于 Redis 事务是否可以保证原子性,要分情况:

1、如果命令入队时就报错,事务不会执行,可以保证原子性

2、如果命令实际执行时报错,就不能保证原子性

3年前 评论

下面命令incr k1会报错,但是会忽略这错误,继续向下执行

set k1 v1
mulit
incr k1
set k2 v2
set k3 v3
get v3
exec

如果你把 incr 写成 incx 写错了 全部不会进行执行。只有这种区别

redis定义的原子性是全部都执行完就行了,中间报错也不管,因为redis觉得这种类型错误,应该是在你的代码中就发现这种问题跟他无关

3年前 评论

可以使用lua脚本实现原子性操作

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!