目录
①组队中某个命令出现了报告错误,执行时整个的所有队列都会被取消
②如果执行阶段某个命令报出了错误,则只有报错的命令不会被执行,而其他的命令都会执行,不会回滚。
Redis的事务定义
Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
Redis事务的主要作用就是串联多个命令防止别的命令插队。
Multi、Exec、discard
从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。
组队的过程中可以通过discard来放弃组队。
注意:为了方便理解我们可以这样看,multi相当于我们之前在讲mysql时候的begin开启事务,exec相当于commit提交,discard相当于rollback回滚,但是只是相当于不是等价于,这个不是彻底的一回事哦。
案例一:组队、执行成功
案例二:组队失败、执行失败
案例三:组队成功、执行失败
事务的错误处理
①组队中某个命令出现了报告错误,执行时整个的所有队列都会被取消
这种情况就好比是我们上面讲到的案例二,组队就出错了,即使你去执行也不会执行的。
②如果执行阶段某个命令报出了错误,则只有报错的命令不会被执行,而其他的命令都会执行,不会回滚。
这种情况就好比我们上面讲到的案例三,组队的时候没有错误,执行的时候如果有错,那么不会影响其他对中的正确指令的执行。
discard介绍
上面介绍的都是multi和exec,至于discard,我们可以这样理解,如果我们在进行multi的侯的操作不想执行它则可以使用discard