结论
1. redis的事务几乎没什么用,只能在单节点情况下,保证一下顺序性,原子性(只是事务执行时不会被插入其他的命令,并不是真正的原子性)
2. redis的事务无法回滚,无论发生什么错误,都无法回滚已经执行的命令,所以不是真正的事务
3. 若redis事务中的命令有语法错误,事务会执行前面正确的命令,遇到错误后不再执行后面的所有命令了,直接返回
4. 若redis事务中的命令没有语法错误,但是某个命令会失败的话,事务会执行前面正确的命令,执行了失败的命令后,后面的命令还会接着执行
5. redis在多节点情况下,由于key会被hash到不同的节点上,而我们使用事务的时候一般都会访问多个key,事务大概率会失败,所以在多节点情况下,事务几乎没法使用
实验1(可以证明:事务中的命令存在基本的语法错误时,事务依然执行了前面的命令,不会回滚)
实验2(可以证明:事务中访问的key不在一个节点上时,压入队列时就报错了,事务没有执行)
注意:本文归作者所有,未经作者允许,不得转载