缓存更新的几种方法
最近做项目遇到了与缓存有关的问题,缓存的更新是一个值得深入研究的操作。
看了网上好多的思路,往往都是先删除缓存,再去从数据库读取,这样的结果很有可能会导致数据不一致,查了一些资料,找到了“耗子叔”的文章,阐述了缓存更新的几种方法
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
这个不是太了解,可以参考耗子叔文章
相关推荐
XPY 2020-11-11
天空一样的蔚蓝 2020-10-23
ZGCdemo 2020-11-09
Freshairx 2020-11-10
ThinkMake 2020-11-13
学习web前端 2020-11-09
菜鸟上路CCLinux 2020-11-04
xueyuediana 2020-10-30
liuyuchen 2020-10-27
xuebingnan 2020-08-24
cyhgogogo 2020-08-18
bluewelkin 2020-08-17
dongCSDN 2020-08-17
Quietboy 2020-08-17
houdaxiami 2020-08-15
chenhaimeimeng 2020-08-15
dabian 2020-08-15
东哥笔记 2020-08-14