Redis事务

在数据库层面,事务是指一组操作,这些操作要么全都被成功执行,要么全都不执行
数据库事务的四大特性:
A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;
C:Consistent,一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100;
I:Isolation,隔离性,如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离;
D:Duration,持久性,即事务完成后,对数据库数据的修改被持久化存储。
Redis事务是一组命令的集合,一个事务中的所有命令都将被序列化,按照一次性、顺序性、排他性的执行一系列的命令。

Redis事务三大特性:
单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断;
没有隔离级别的概念:队列中的命令没有提交之前都不会实际的被执行,因为事务提交前任何指令都不会被实际执行,也就不存在”事务内的查询要看到事务里的更新,在事务外查询不能看到”。
不保证原子性:redis同一个事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚;
Redis事务执行的三个阶段

开启:以MULTI开始一个事务;
入队:将多个命令入队到事务中,接到这些命令并不会立即执行,而是放到等待执行的事务队列里面;
执行:由EXEC命令触发事务;
Redis事务基本操作 💎

Multi、Exec、discard
事务从输入Multi命令开始,输入的命令都会依次压入命令缓冲队列中,并不会执行,直到输入Exec后,Redis会将之前的命令缓冲队列中的命令依次执行。组队过程中,可以通过discard来放弃组队。
- 正常执行
MULTI
set id 12
get id
get ids # 不会影响
incr t1
incr t1
get t1
EXEC- 放弃事务
MULTI
set name z3
set age 29
incr t1
DISCARD # 以上操作都不会执行- 正常执行
ULTI
set name z3
get name
incr t1
get t1
set email #(error) ERR wrong number of arguments for 'set' command
exec # (error) EXECABORT Transaction discarded because of previous errors.警告
命令集合中含有错误的指令(注意是语法错误),均连坐,全部失败。
至此,本章节的学习就到此结束了,如有疑惑,可对接技术客服进行相关咨询。