关闭

redis的事务总结

古今自逍遥 1年前 ⋅ 172 阅读

结论

1. redis的事务几乎没什么用,只能在单节点情况下,保证一下顺序性,原子性(只是事务执行时不会被插入其他的命令,并不是真正的原子性)

2. redis的事务无法回滚,无论发生什么错误,都无法回滚已经执行的命令,所以不是真正的事务

3. 若redis事务中的命令有语法错误,事务会执行前面正确的命令,遇到错误后不再执行后面的所有命令了,直接返回

4. 若redis事务中的命令没有语法错误,但是某个命令会失败的话,事务会执行前面正确的命令,执行了失败的命令后,后面的命令还会接着执行

5. redis在多节点情况下,由于key会被hash到不同的节点上,而我们使用事务的时候一般都会访问多个key,事务大概率会失败,所以在多节点情况下,事务几乎没法使用

实验1(可以证明:事务中的命令存在基本的语法错误时,事务依然执行了前面的命令,不会回滚)

实验2(可以证明:事务中访问的key不在一个节点上时,压入队列时就报错了,事务没有执行)


全部评论: 0

    我有话说: