一、事务的本质
一组命令的集合。一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行。
二、事务的特性
- 一次性:指的是Redis中的事务只执行一次,在该事务执行结束之后,这条事务的生命周期就结束了,再次执行事务时需要重新开启事务。
- 顺序性:指Redis的事务中的所有命令,都是按照先后顺序依次执行的。
- 排他性:指事务在对某一个数据进行操作的同时,其他事务或其他命令不能对这个数据进行操作。
三、注意
1、redis事务没有隔离级别的概念。所有的命令在事务中,并没有直接执行,只有发起执行命令的时候才
会执行(Exec)
2、redis单条命令是保证原子性的,但是事务不保证原子性
四、操作步骤
1.开启事务(multi)
2.命令入队(正常命令集合)
3.执行事务(exec)
MULTI #标记一个事务块的开始。
WATCH key [key ...] #监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
UNWATCH #取消 WATCH 命令对所有 key 的监视。
DISCARD #取消事务,放弃执行事务块内的所有命令。
EXEC #执行所有事务块内的命令。
五、所有情况
- 正常执行事务
- 放弃事务
- 编译型异常(代码有问题命令出错,事务中所有的命令都不会被执行)
- 运行时异常(IO异常,如果事务队列中存在逻辑问题,那么执行命令的时候,其他命令是可以正常执行的,
错误命令抛出异常)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END