事务
Redis单条命令是保存原子性的,Redis事务是不保证原子性的
- 编译型错误:编译的时候就错了,那么整个事务都不会执行
- 运行时错误:可以编译,但是运行错误,其他命令是可以的
事务的本质:是一组命令的集合,事务的所有命令都会被序列化
在事务执行时,按照顺序执行,
一次性执行,排他性、顺序性
没有隔离级别
运行
Redis事务:
- 开始事务。
- 命令入队。
- 执行事务。
MULTI --开启事务
、、、
、、、
、、、
exec ----执行事务
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set name packet
QUEUED
127.0.0.1:6379(TX)> set age 18
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)> exec
1) OK
2) OK
3) "packet"
MULTI --开启事务
、、、
、、、
、、、
DISCARD ----取消事务
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set name pp
QUEUED
127.0.0.1:6379(TX)> set age 19
QUEUED
127.0.0.1:6379(TX)> DISCARD
OK
异常
- 编译型异常(代码有问题,命令有错),事务中所有的名利都不会被执行
- 运行时异常(可以编译),事务队列中存在部分语法错误,那么其他的命令可以被执行,错误命令抛出异常