前言#
今天学习 redis 时,发现 redis 的事务功能无法回滚,也就是在执行事务时,如果中间的某个命令执行出错了,不会回滚到事务之前,而是继续执行下去
What ? What ?,那事务还有毛用,没有原子性,没有一致性
根据我查阅资料,和思考,稍微总结了一下,可能不全面
性能优化#
由于事务是将所有的命令一次性的发送给服务器的,而且是一次性执行,所以性能要更高
虽然但是,我觉得这一点小小的性能优化也没什么用
并发环境下的数据一致#
由于可能有多个客户端同时对一个 redis 实例进行操作,事务可以保证在执行时不会被插队,所以虽然无法保证事务内的命令数据一致,但是可以保证并发环境下的数据一致
简单高效#
我们发现,学习过那么多的 redis 命令,好像没什么命令会报错,就算你输入的 key 出错了,也就是报个 nil
,所以只有你的 redis 命令语法出错时,才会报错。
这么说就没必要支持回滚了,这样使得 redis 更加简单高效