在《究竟先操作缓存,还是数据库?》,有同学在评论提出,相关方案违背了“Cache Aside Pattern”的原则,故今天聊一聊Cache Aside Pattern。
网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于成都企业网站建设,高端网页制作,对水电改造等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业seo优化优化,H5建站,响应式网站。
另外,在讨论技术方案时,尽量不说:
画外音:凭什么facebook就是真理?它的方案只是适合它的业务而已。
说明适用场景,说明来龙去脉,说明前因后果,比具体使用什么方案更重要。
什么是“Cache Aside Pattern”?
答:旁路缓存方案的经验实践,这个实践又分读实践,写实践。
对于读请求
如上图:
画外音:这一点上,与《究竟先操作缓存,还是数据库?》说的是一致的。
对于写请求
如上图:
(1)***步要操作数据库,第二步操作缓存
画外音:这一点上,与《究竟先操作缓存,还是数据库?》说的不一致,也是评论反驳比较激烈的地方。
(2)缓存,采用delete淘汰,而不是set更新
画外音:这一点上,与《缓存,究竟是淘汰,还是修改?》说的是一致的。
Cache Aside Pattern为什么建议淘汰缓存,而不是更新缓存?
答:如果更新缓存,在并发写时,可能出现数据不一致。
如上图所示,如果采用set缓存。
在1和2两个并发写发生时,由于无法保证时序,此时不管先操作缓存还是先操作数据库,都可能出现:
导致,数据库与缓存之间的数据不一致。
所以,Cache Aside Pattern建议,delete缓存,而不是set缓存。
Cache Aside Pattern为什么建议先操作数据库,再操作缓存?
答:如果先操作缓存,在读写并发时,可能出现数据不一致。
如上图所示,如果先操作缓存。
在1和2并发读写发生时,由于无法保证时序,可能出现:
导致,数据库与缓存的数据不一致。
所以,Cache Aside Pattern建议,先操作数据库,再操作缓存。
Cache Aside Pattern方案存在什么问题?
答:如果先操作数据库,再淘汰缓存,在原子性被破坏时:
导致,数据库与缓存的数据不一致。
如何解决这类问题呢?
答:详见《究竟先操作缓存,还是数据库?》。
【本文为专栏作者“58沈剑”原创稿件,转载请联系原作者】
本文题目:CacheAsidePattern(缓存模式)解析
文章网址:http://www.gawzjz.com/qtweb/news19/200969.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联