数据一致性问题

在一段代码中,同时对mysql,redis,mongodb进行了操作,怎么能保证这几个数据库之间数据的一致性呢?
比如msyql保存字段A,redis保存字段B,mongodb保存字段C,如何能确保ABC同时成功或者失败

阅读 5k
5 个回答

虽然操作是同时的,但是每个数据库在处理时不一样,并不能保证他们都成功。
可以当三个处理都成功时,才算最终的成功,有一个失败,就当成失败。

这个设定是这样没错?

我想redis跟mysql的事务比较好操作,插入前开启事务mongodb操作成功在一起commit吧,rollback一起rollback

因为涉及到三个类型的数据库,所以应该是没有现成的XA协议,来保证各个数据库的强一致性。所以可以退而求其次,保证最终一致性.
分布式事务1
分布式事务2

新手上路,请多包涵

非关系数据库对事务的支持都比较差。比如redis的事务没有原子性。而mongo支持的也不好。所以靠数据库的事务回滚是不妥的。

要同时成功,是否可以考虑把对数据库的操作包裹在mySql的事务中再再外面包上redis的事务,如果数据库操作失败,取消掉redis的事务。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题