缓存常用更新策略

当QPS/TPS增加导致数据库压力增大时,引入缓存机制。Cacheaside策略是先更新数据库再删缓存;Readthrough将数据交互委托给CacheProvider,减少数据库负载;Writebehind则是应用程序只更新缓存,CacheProvider定时批量写入数据库,提高写入速度但影响一致性。

关于数据库与缓存更新策略方式

当应用程序的QPS/TPS上来后数据库的压力剧增,通常会引入缓存机制,来减轻数据库压力,缓存的引入容易造成数据库与缓存不一致,所以缓存更新策略的选择尤为重要

一、Cache aside(旁路缓存)

应用首先会判断缓存是否有该数据,缓存命中直接返回数据,缓存未命中即缓存穿透到数据库,从数据库查询数据然后回写到缓存中,最后返回数据给客户端。

首先更新数据库,然后从缓存中删除该数据。

二、Read through

相比与Cache aside需要维护数据库与缓存两个源头,Read through则只需要将数据库的同步委托给缓存提供程序Chache Provider即可,数据交互只通过抽象缓存层完成,应用程序只需要和Cache Provider交互,并不用关心来自缓存还是数据库

在进行大量读取时,Read-Through 可以减少数据源上的负载,也对缓存服务的故障具备一定的弹性。如果缓存服务挂了,则缓存提供程序仍然可以通过直接转到数据源来进行操作

Write操作时,也是由Cache Provider负责更新数据库与缓存。

三、Write behind

简单理解就是:应用程序更新数据时只更新缓存, Cache Provider每隔一段时间将数据刷新到数据库中。说白了就是延迟写入数据库

适用于频发写操作时的情景,写入速度快。但缓存与数据库的一致性不高,要谨慎考虑。

总结

Cache aside 通常会先更新数据库,然后再删除缓存,为了兜底通常还会将数据设置缓存时间。

Read/Write through 一般是由一个 Cache Provider 对外提供读写操作,应用程序不用感知操作的是缓存还是数据库。

Write behind简单理解就是延迟写入,Cache Provider 每隔一段时间会批量输入数据库,优点是应用程序写入速度非常快。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值