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

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

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

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

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

yema
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5

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

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

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

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

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

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

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

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

2年前 评论

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

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

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

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

2年前 评论

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

2年前 评论

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