Redis作为主流的NoSQL,几乎成了各大中小型项目技术选型的标配,而我们通常也只是将Redis作为缓存来使用。很少有人知道Redis也有「事务」的概念。

Redis事务支持并不完整

虽说Redis有事务概念,但是它相对于关系型资料库的事务而言,事务实现的并不完全。Redis中的事务并不是严格意义的事务,因为无法保证ACID(原子性、一致性、隔离性、持久性)特性。

Redis中的事务仅是简单的将一系列命令封装在一起执行,事务只能取消,而不能进行回滚操作!事务中涉及的多条命令中的一条出现错误,并不影响其它命令的正常执行。

Redis事务为什么不支持回滚?

Redis事务之所以不支持回滚操作是因为Redis中的事务并不是关系型资料库中所说的事务。Redis事务靠的是命令队列实现的,Redis中的命令只有在语法错误时才会执行失败,而命令若存在语法错误也无法进入事务队列中,所以可以理解为Redis中的命令不会执行失败,因此不需要回滚。


综上,Redis事务并不是严格意义上的事务,所以在实际项目中不建议使用Redis事务,没有必要。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!


redis是nosql,key-value资料库,但是存储的数据key-value键值对,一个key对应一个value,储存成功了就是成功了,失败了就是失败了,为什么会有事务;如果有事务,请放弃redis,他不适合此类业务场景。可以把多个值作为一个value来存。


推荐阅读:
相关文章