redis事务
redis事务是一个单独的隔离操作,事务中的所有命令都会被序列化、按顺序的执行。事务在执行的过程中,不会被其他客户端发送过来的请求打断;即串联多个命令防止别的命令插队;
1. redis中事务常用的命令
Multi
:开启事务;
Exec
:结束事务;
discard
:直接取消事务;
上面的那张图就是Redis的官方文档翻译;基本就是按照两个错误来介绍,一个是入队错误(类似于编译错误)一般在exec之前出现,一个是内部错误(类似于运行时错误)一般是在执行了exec之后才出现,前一个错误会导致当前事务被取消,后一个错误只会让那个出错的指令取消;
上图就是表示错误发生在运行时,至于入队错误,只需要你把指令打错了或者参数放错了,都会属于入队错误;
在redis中一旦出现错误,整个事务不会被终止,也就是只有出错的那个命令不再执行,但是其他的指令一样的执行;同样也不会回滚;
watch
:用于监视某一个键,可以放在事务之前,一旦在事务完成前其中的某个值发生了改变,就会将这个事务直接结束;
unwath
:取消监视;
三个特性:1. 单独的隔离操作,事务中所有的命令都按顺序执行;2.没有隔离级别的概念(没有像MySQL中的隔离级别),就不会导致什么类似于脏读等行为;3.不保证原子性,就像是redis中犯了第二个错误一样,除了错误的指令,其它的都可以执行;