通俗讲解缓存穿透和缓存雪崩

2024-05-24 17:27:30 浏览数 (1)

缓存穿透

想象一下,你开了一家商店,但是有人总是来问一些你店里根本没有的商品(我们可以把这些商品理解为数据库里不存在的数据)。为了避免每次都去仓库(数据库)查找这些根本不存在的商品,你决定在店门口放一个告示(缓存),列出你店里有的商品。但是,如果有人故意或无意地询问告示上没有的商品,你仍然需要每次都去仓库确认,这就是缓存穿透。它会导致你不得不频繁访问仓库(数据库),浪费大量时间和资源。

解决方法可以是在告示上标注:“除了这些商品,其他的我们店里都没有”,这样就不用每次都去仓库确认了。

缓存雪崩

现在,想象在一个非常忙碌的日子,突然你店门口的告示(缓存)因为某种原因全部丢失了,所有的顾客都需要你去仓库(数据库)确认商品。这会导致仓库接受大量的查询请求,过载甚至瘫痪,这就是缓存雪崩。

解决方法可以是制作多份告示(设置多级缓存)或者在告示即将丢失前(缓存即将过期时),提前准备好新的告示来替换旧的,这样就能避免大家同时冲向仓库的情况。

综上所述:

  • 缓存穿透是指查询不存在的数据,导致每次查询都要访问数据库,可以通过设置默认空值缓存来防止。
  • 缓存雪崩是指大量缓存同时失效,导致短时间内大量请求直接落到数据库上,可以通过设置不同的缓存过期时间来避免。

0 人点赞