关于数据库与缓存更新策略方式
当应用程序的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 每隔一段时间会批量输入数据库,优点是应用程序写入速度非常快。

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

被折叠的 条评论
为什么被折叠?



