本文学习redis系列之缓存预热、缓存更新、缓存降级,其中重点理解缓存更新
1.缓存预热
预先将热点数据加载到缓存系统中,这样系统上线后,用户访问会优先缓存查询,降低数据库查询压力
2.缓存更新
缓存更新存在四种经典的模式:Cache Aside、Read Through、Write Through、Write Behind Caching
2.1 Cache Aside
这是最常用的模式
- 更新时,先把数据存到数据库中,成功后,再让缓存失效
- 查询时,如果命中缓存则返回,如果未命中,则把数据读出来后放到缓存中返回
2.2 Read Through
在查询操作中更新缓存。当缓存失效(过期或LRU换出)时,Cache Aside由调用方负责把数据载入缓存,而Read Through由Cache自己来加载,对应用方透明
2.3 Write Through
在更新操作中更新缓存。当数据更新时,如果未命中缓存,则直接更新数据库,然后直接返回,如果命中缓存,则更新缓存,Cache自己同步更新数据库
2.4 Write Behind Caching
Write Behind又叫Write Back,是Linux文件系统的Page Cache的算法。
Write Behind在更新数据的时候,只更新缓存,不更新数据库,而缓存会异步批量更新数据库
ps:先删除缓存,后更新数据库,再把数据装载至缓存存在的问题
试想,两个并发操作,一个更新操作,另一个查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,缓存中的数据是老的脏数据,并且会一直脏下去
3.缓存降级
当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务,这时就需要降级,防止redis服务故障导致缓存雪崩。如双十一服务降级,地址无法修改仅允许默认地址下单
版权声明:本文为SJshenjian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。