redis事务的所有命令都是序列化,有序地执行。在事务的执行过程中,不会被其他客户端发送的命令所打断。事务的主要作用就是串联所有命令防止其他命令插队。
redis事务有几个常用的命令,首先是multi命令,它标记着事务的开始,意思是将命令入命令队列,但不会被执行,只有输入exec命令之后,才会依次执行命令队列中的命令,在组队的过程中,输入discard命令就会放弃组队,命令都不会被执行。还有watch和unwatch命令,在执行multi之前,先执行watch命令去监听key,如果在执行exec之前,key被其他命令修改了,那么事务就会失败。而unwatch命令是取消watch对所有key的监听。
还有就是在组队的过程中,如果其中一个命令失败了,那么在执行exec时整个队列中的命令都不会被执行。如果在执行的过程中,其中的一个命令失败了,那剩下的命令依然会执行,不会回滚。
redis事务还有三大特性,第一个就是单独的隔离操作:事务的所有命令都是序列化,有序地执行,不会被其他客户端发送的命令所打断。第二个就是没有隔离级别的概念:因为事务在提交前所有命令都不会被实际的执行,第三个是不保证原子性:一个命令失败了,其他命令可以接着执行,不会回滚。