diff --git a/docs/database/Redis/images/缓存读写策略/cache-aside-read.drawio b/docs/database/Redis/images/缓存读写策略/cache-aside-read.drawio new file mode 100644 index 00000000..fbae0cc1 --- /dev/null +++ b/docs/database/Redis/images/缓存读写策略/cache-aside-read.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/database/Redis/images/缓存读写策略/cache-aside-read.png b/docs/database/Redis/images/缓存读写策略/cache-aside-read.png new file mode 100644 index 00000000..f8b9589d Binary files /dev/null and b/docs/database/Redis/images/缓存读写策略/cache-aside-read.png differ diff --git a/docs/database/Redis/images/缓存读写策略/cache-aside-write.drawio b/docs/database/Redis/images/缓存读写策略/cache-aside-write.drawio new file mode 100644 index 00000000..62f3ee73 --- /dev/null +++ b/docs/database/Redis/images/缓存读写策略/cache-aside-write.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/database/Redis/images/缓存读写策略/cache-aside-write.png b/docs/database/Redis/images/缓存读写策略/cache-aside-write.png new file mode 100644 index 00000000..c976cc99 Binary files /dev/null and b/docs/database/Redis/images/缓存读写策略/cache-aside-write.png differ diff --git a/docs/database/Redis/some-concepts-of-caching.md b/docs/database/Redis/some-concepts-of-caching.md index fb5730f5..327af9f1 100644 --- a/docs/database/Redis/some-concepts-of-caching.md +++ b/docs/database/Redis/some-concepts-of-caching.md @@ -92,13 +92,62 @@ _那本地缓存的方案有哪些呢?且听 Guide 给你来说一说。_ #### 5.1. Cache Aside Pattern(旁路缓存模式) -1. 写:更新 DB,然后直接删除 cache 。 -2. 读:从 cache 中读取数据,读取到就直接返回,读取不到的话,就从 DB 中取数据返回,然后再把数据放到 cache 中。 - -Cache Aside Pattern 中服务端需要同时维系 DB 和 cache,并且是以 DB 的结果为准。另外,Cache Aside Pattern 有首次请求数据一定不在 cache 的问题,对于热点数据可以提前放入缓存中。 - **Cache Aside Pattern 是我们平时使用比较多的一个缓存读写模式,比较适合读请求比较多的场景。** +Cache Aside Pattern 中服务端需要同时维系 DB 和 cache,并且是以 DB 的结果为准。 + +下面我们来看一下这个策略模式下的缓存读写步骤。 + +**写** : + +- 先更新 DB +- 然后直接删除 cache 。 + +简单画了一张图帮助大家理解写的步骤。 + +![cache-aside-write](images/缓存读写策略/cache-aside-write.png) + +**读** : + +- 从 cache 中读取数据,读取到就直接返回 +- cache中读取不到的话,就从 DB 中读取数据返回 +- 再把数据放到 cache 中。 + +简单画了一张图帮助大家理解读的步骤。 + +![cache-aside-read](images/缓存读写策略/cache-aside-read.png) + + + +你仅仅了解了上面这些内容的话是远远不够的,我们还要搞懂其中的原理。 + +比如说面试官很可能会追问:“**在写数据的过程中,可以先删除缓存,后更新数据库么?**” + +**答案:** 那肯定是不行的!因为这样可能会造成**数据库和缓存数据不一致**的问题。为什么呢?比如说请求1 先写数据A,请求2随后读数据A的话就很有可能产生数据不一致性的问题。这个过程可以简单描述为: + +> 请求1先把缓存中的A数据删除 -> 请求2从数据库中读取数据->请求1再把数据库中的A数据更新。 + +当你这样回答之后,面试官可能会紧接着就追问:“**在写数据的过程中,先更新数据库,后删除缓存就没有问题了么?**” + +**答案:** 理论上来说还是可能会出现数据不一致性的问题,不过概率非常小,因为缓存的写入速度是比数据库的写入速度快很多! + +比如请求1先读数据 A,请求2随后写数据A,并且数据库A不在缓存中的话也有可能产生数据不一致性的问题。这个过程可以简单描述为: + +> 请求1从DB读数据A->请求2写更新数据 A 到数据库并把删除缓存中的A数据->请求1将数据库A写入缓存。 + +现在我们再来分析一下 **Cache Aside Pattern 的缺陷**。 + +**缺陷1:首次请求数据一定不在 cache 的问题** + +解决办法:可以将热点数据可以提前放入缓存中。 + +**缺陷2:写操作比较频繁的话导致缓存中的数据会被频繁被删除,这样会影响缓存命中率 。** + +解决办法: + +- 数据库和缓存数据强一致场景 :更新数据的时候同样更新缓存,不过我们需要加一个锁/分布式锁来保证更新缓存的时候不存在线程安全问题。 +- 可以短暂地允许数据库和缓存数据不一致的场景 :更新数据的时候同样更新缓存,但是给缓存加一个比较短的过期时间,这样的话就可以保证即使数据不一致的话影响也比较小。 + #### 5.2. Read/Write Through Pattern(读写穿透) Read/Write Through 套路是:服务端把 cache 视为主要数据存储,从中读取数据并将数据写入其中。cache 服务负责将此数据读取和写入 DB,从而减轻了应用程序的职责。