关于维护一份数据是先写数据库,还是先写缓存的问题,很多朋友发表了自己的看法,本文来谈谈我的看法。我的结论非常清晰明确:先写数据库再写缓存。核心思想是数据库和缓存之间追求最终一致性,不追求强一致性。
(1) 在缓存作为提升系统性能手段的背景下,不需要保证数据库和缓存的强一致性。如果非要保证二者的强一致性,会增大系统的复杂度,完全没有必要
(2) 如果更新数据库成功,再更新缓存。此时存在两种情况:更新缓存成功则万事大吉。更新缓存失败,没有关系,等待缓存失效,此处要合理设置失效时间
(3) 如果更新数据库失败,则操作失败,重试或者等待用户重新发起
(4) 数据库是持久化数据,是操作成功还是失败的判断依据。缓存是提升性能的手段,允许短时间和数据库的不一致
(5) 在互联网架构中,很少追求强一致性,一般都是追求最终一致性
如果非要保证缓存和数据库的一致性,本质上是在解决分布式一致性问题。
分布式一致性问题解决方案有很多,可以选择比如两阶段提交,TCC,本地消息表,MQ事务性消息等方案。
先写数据库还是先写缓存
猜你喜欢
转载自blog.csdn.net/woshixuye/article/details/104178318
今日推荐
周排行