缓存与数据库一致性保证

  1. 云栖社区>
  2. 中生代技术>
  3. 博客>
  4. 正文

缓存与数据库一致性保证

行者武松 2017-08-01 10:42:00 浏览2025
展开阅读全文

本文主要讨论这么几个问题:

1)啥时候数据库和缓存中的数据会不一致

2)不一致优化思路

3)如何保证数据库与缓存的一致性


一、需求缘起

上一篇《缓存架构设计细节二三事》引起了广泛的讨论,其中有一个结论:当数据发生变化时,“先淘汰缓存,再修改数据库”这个点是大家讨论的最多的。


上篇文章得出这个结论的依据是,由于操作缓存与操作数据库不是原子的,非常有可能出现执行失败。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1
假设先写数据库,再淘汰缓存:第一步写数据库操作成功,第二步淘汰缓存失败,则会出现DB中是新数据,Cache中是旧数据,数据不一致【如上图:db中是新数据,cache中是旧数据】。

 

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1
假设先淘汰缓存,再写数据库:第一步淘汰缓存成功,第二步写数据库失败,则只会引发一次Cache miss【如上图:cache中无数据,db中是旧数据】。

 

结论:先淘汰缓存,再写数据库。

 

引发大家热烈讨论

网友评论

登录后评论
0/500
评论
行者武松
+ 关注
所属团队号: 中生代技术