redis:为什么redis事务不支持回滚

Redis的事务处理策略不支持回滚,这一特性源于其对编程错误的预期,认为这些错误应在开发阶段解决。由于避免了回滚机制,Redis保持了简单和高效。文中指出,回滚无法解决所有编程错误,例如值增加错误或对错误类型键的操作,这些都需要在编程时预防。因此,Redis选择牺牲事务安全性以换取速度和简洁性。
摘要由CSDN通过智能技术生成

如果你有使用关系数据库的经验,那么“redis在事务失败时不进行回滚,而是继续执行余下的命令”这种做法可能会让你觉得有些奇怪。

下面是这种做法的优点:

  • redis命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或者是命令用在了错误类型的键上面。也就是说,失败的命令是由编程错误造成的,而这些错误应该在开发的过程中被发现,而不应该出现在生产环境中
  • 因为不需要对回滚进行支持,所以redis的内部可以保持简单快速。

有种观点认为 Redis 处理事务的做法会产生 bug , 然而需要注意的是, 在通常情况下, 回滚并不能解决编程错误带来的问题。 举个例子, 如果你本来想通过 INCR key 命令将键的值加上 1 , 却不小心加上了 2 , 又或者对错误类型的键执行了 INCR key , 回滚是没有办法处理这些情况的。

鉴于没有任何机制能够避免程序员自己造成的错误,并且这类错误通常不会在生产环境中出现,所以redis选择了更简单、更快速的无回滚方式来处理事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值