前言#
今天学习 redis 时,发现 redis 的事务功能无法回滚,也就是在执行事务时,如果中间的某个命令执行出错了,不会回滚到事务之前,而是继续执行下去
What ? What ?,那事务还有毛用,没有原子性,没有一致性
根据我查阅资料,和思考,稍微总结了一下,可能不全面
隔离性#
虽然不支持回滚了,但是还有并发环境下的隔离性,watch
可以实现类似乐观锁,会在最后 exec
时检查是否冲突
简单高效#
我们发现,学习过那么多的 redis 命令,好像没什么命令会报错,就算你输入的 key 出错了,也就是报个 nil
,只有你的 redis 命令语法出错时,或使用错误类型的键才会报错,而这些错误应该在开发时发现。
所以没有了回滚,Redis 的内部可以更加地简单高效,从而提高性能
这么说就没必要支持回滚了,这样使得 redis 更加简单高效