- Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
(redis 一次性,顺序性,排他性。)
批量操作在发送 EXEC 命令前被放入队列缓存。
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。- 事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
- redis单条命令是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的!(原子性:同时成功,或者同时失败!)
命令:
multi(事务开启)
exec(提交事务)
DISCARD(取消事务)
1.批量操作在发送 EXEC 命令前被放入队列缓存。
一次性,顺序性
2.编译时异常(命令有问题),所有命令都不会被执行
3.收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行,错误的命令会抛出异常!
Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的!
中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
4.取消事务