缓存更新的几种方法
Posted codingliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存更新的几种方法相关的知识,希望对你有一定的参考价值。
最近做项目遇到了与缓存有关的问题,缓存的更新是一个值得深入研究的操作。
看了网上好多的思路,往往都是先删除缓存,再去从数据库读取,这样的结果很有可能会导致数据不一致,查了一些资料,找到了“耗子叔”的文章,阐述了缓存更新的几种方法
Cache Aside
- 失效:应用程序先从cache中取数据,没取到就去数据库中找,成功后放入缓存
- 命中:从cache中直接返回
- 更新:先把更新数据库,成功后,再让缓存失效
Read/Write Through Pattern
我们可以看到,在上面的Cache Aside套路中,我们的应用代码需要维护两个数据存储,一个是缓存(Cache),一个是数据库(Repository)。所以,应用程序比较啰嗦。而Read/Write Through套路是把更新数据库(Repository)的操作由缓存自己代理了,所以,对于应用层来说,就简单很多了。可以理解为,应用认为后端就是一个单一的存储,而存储自己维护自己的Cache。
Read Through
Read Through 套路就是在查询操作中更新缓存,也就是说,当缓存失效的时候(过期或LRU换出),Cache Aside是由调用方负责把数据加载入缓存,而Read Through则用缓存服务自己来加载,从而对应用方是透明的。
Write Through
Write Through 套路和Read Through相仿,不过是在更新数据时发生。当有数据更新的时候,如果没有命中缓存,直接更新数据库,然后返回。如果命中了缓存,则更新缓存,然后再由Cache自己更新数据库(这是一个同步操作)
Write Behind Caching Pattern
这个不是太了解,可以参考耗子叔文章
参考文章:https://coolshell.cn/articles/17416.html
以上是关于缓存更新的几种方法的主要内容,如果未能解决你的问题,请参考以下文章