我是靠谱客的博主 光亮鞋垫,最近开发中收集的这篇文章主要介绍保持DB和缓存一致性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

      • Cache Aside Pattern
      • Read/Write Through Pattern
      • Write Behind Caching Pattern
      • mysql更新缓存方式

​ 对于维持DB和缓存的一致性,我们先假设更新数据库和更新缓存都可以成功的情况。

​ 主要有以下几种方法:

Cache Aside Pattern

​ 对于一致性更新,先把数据存到数据库中,成功后再让缓存失效

​ 这时,对于并发的更新和查询操作,并发查询操作拿到的是脏数据,而更新成功后的查询操作都是更新后的数据。

​ 不过理论上也有一直出现脏读的可能性:并发读和写,读操作缓存不命中,读操作从数据库取数据。此时写操作修改完数据库,让缓存失效。然后之前读的操作把脏数据存入缓存,造成缓存中脏数据存在。(可能性特别低,因为写操作比读操作慢很多,读操作在写操作前进入数据库操作并在写操作结束后就结束可能性特别低)

Read/Write Through Pattern

​ 应用认为后端就是一个单一的存储,后台数据库自己维护缓存。其中Read Through Pattern策略是在查询时更新缓存(当缓存失效的时候,后台服务器自动加载),而Write Through Pattern策略是在更新时更新缓存(当有数据更新时,如果没有命中缓存,则更新数据库并发返回。否则更新缓存再由缓存更新数据库)

Write Behind Caching Pattern

​ 在更新数据的时候,只更新缓存,不更新数据库,然后缓存会异步地批量更新数据库。这样效率非常快。缺点是数据库和缓存不能保持强一致性,还可能造成数据丢失

mysql更新缓存方式

​ 先更新缓存,然后异步把数据写到磁盘上。为了保证数据不丢失,采用WAL方法:数据进来后先把数据以log方式写到磁盘(由于是顺序写,所以很快)。写完后进行更新缓存操作,若出现死机等情况,重启后可以从log文件中重新把数据读出来然后再更新到缓存,最后异步更新到数据库。

转载请注明出处!!!

如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢

最后

以上就是光亮鞋垫为你收集整理的保持DB和缓存一致性的全部内容,希望文章能够帮你解决保持DB和缓存一致性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部