缓存常用的三种读写策略==》Cache Aside Pattern(旁路缓存模式)

news/2025/2/4 21:21:01/

Cache Aside Pattern(旁路缓存模式)

Cache Aside Pattern 中服务端需要同时维系 DB 和 cache,并且是以 DB 的结果为准。

下面我们来看一下这个策略模式下的缓存读写步骤。

  • 先更新 DB

  • 然后直接删除 cache 。

简单画了一张图帮助大家理解写的步骤。

 

:

  • 从 cache 中读取数据,读取到就直接返回

  • cache中读取不到的话,就从 DB 中读取数据返回

  • 再把数据放到 cache 中。

Cache Aside Pattern 有一定的缺陷:

缺陷1:首次请求数据一定不在 cache 的问题

解决办法:可以将热点数据可以提前放入cache 中。

缺陷2:写操作比较频繁的话导致cache中的数据会被频繁被删除,这样会影响缓存命中率 。

解决办法:

  • 数据库和缓存数据强一致场景 :更新DB的时候同样更新cache,不过我们需要加一个锁/分布式锁来保证更新cache的时候不存在线程安全问题。

  • 可以短暂地允许数据库和缓存数据不一致的场景 :更新DB的时候同样更新cache,但是给缓存加一个比较短的过期时间,这样的话就可以保证即使数据不一致的话影响也比较小。

有以下两个问题:

在写数据的时候可以先删除Cache,再更改db吗?       

解答:当然不可以,会造成数据不一致,比如请求1要写入A数据,在请求1删除了Cache后,请求2要读A数据,然后请求1在请求2读完数据后才写入A数据,这样请求2读到的数据其实是旧数据,造成数据不一致。

在写数据的过程中,先更新DB,后删除cache就没有问题吗?

​​​​​​​解答:理论上来说还是可能会出现数据不一致性的问题,不过概率非常小,因为缓存的写入速度是比数据库的写入速度快很多!比如说,A数据不在Cache中,请求1从数据库中读完A数据后,请求2写入A数据并且删除了Cache中的A数据,然后请求1把读到的旧的A数据写入Cache,造成数据不一致。


http://www.ppmy.cn/news/394272.html

相关文章

Mysql 缓存策略

文章目录 1、访问性能提升1.1、读写分离mysql 主从复制 1.2、连接池1.3、异步连接 2、缓存方案2.1、场景分析2.1.1、存储层2.1.2、缓存层2.1.3、热点数据 2.2、一致性状态分析2.3、读写策略2.3.1、读策略2.3.2、写策略安全优先效率优先 2.4、同步策略伪装从库 3、缓存故障3.1、…

三种缓存策略分析:Cache aside,Read/Write through,Write Back

Cache aside 旁路缓存,旁路缓存操作逻辑是查询缓存,如果不存在那么就读取数据库并更新到缓存当中. 如果是更新数据库,那么操作完数据库后,删除缓存. 注意旁路缓存,缓存中的内容是不做更新操作的,只有写入和删除操作. 问题 1.请求1查询不到缓存,查询数据库.请求2更新数据,删…

常见缓存读写策略

目录 缓存读写策略Cache Aside Pattern读请求写请求旁路缓存模式的缺点 Read/Write Through Pattern读请求写请求 Write Behind Pattern读请求写请求 缓存读写策略 我们都知道缓存大多数情况下是用来减轻数据库压力的。缓存读写策略就是在进行数据读/写时以何种策略读写缓存和…

缓存常用的三种读写策略

文章目录 缓存常用的三种读写策略Cache Aside Pattern(旁路缓存模式)应用情况及场景旁路缓存模式的原理旁路缓存模式的缓存读写步骤旁路缓存模式的面试问题问题一问题二(追问 问题一)问题三问题四 Read / Write Through Pattern&a…

什么是缓存,缓存策略有哪些?

1、什么是缓存? ☞ 缓存就是数据交换的缓冲区(称作:Cache),当某一硬件要读取数据时,会首先从缓存汇总查询数据,有则直接执行,不存在时从内存中获取。由于缓存的数据比内存快的…

3种常用的缓存读写策略

导读 提起缓存,大家应该都不陌生,开始时,如果你的业务处于起步阶段,流量非常小,那无论是读请求还是写请求,直接操作数据库即可,这时你的架构模型是这样的: 但随着业务量的增长&…

MySQL缓存策略详解

MySQL缓存方案 一、MySQL缓存方案目的分析1.1、缓存层的作用1.2、缓存层选择1.3、场景分析 二、提升MySQL访问性能的方式2.1、MySQL主从复制2.2、读写分离2.3、连接池2.4、异步连接 三、redis作为主数据库的常用方法四、缓存方案4.1、缓存和MySQL一致性状态分析4.2、制定读写策…

常用缓存读写策略(cache读写策略)

文章目录 前言一、Cache Aside Pattern (旁路缓存模式)二、Read/Write Through Pattern(读写穿透模式)三、Write Behind Pattern(异步缓存写入)总结 前言 平时在我们使用数据库的时候一般都会再额外使用缓存,使用缓存…