缓存穿透、缓存击穿、缓存雪崩

本文深入探讨了缓存中的三大问题:缓存穿透、缓存击穿和缓存雪崩,解析了它们的成因及危害。针对这些问题,提出了相应的解决方案,如使用缓存空对象、布隆过滤器、分布式锁以及设置key过期时间加随机值等策略,旨在确保系统的稳定性和高可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

发明这几个词的人就NM像个脑瘫儿,铁弱智。有问题就说明问题,整些个自创的名词真的恶心。

前置知识回顾

缓存就是为了减轻数据库的压力。

请求——>缓存——>数据库

直白讲,要是缓存里有,就不用去数据库再查一遍了。

名词解释

缓存穿透:

要查询的数据根本就不存在,这里的不存在说的是数据库里本身就没有。

比如一张表里的自增ID才到100,但大量请求查询id=200

缓存击穿:

要查询的数据存在,数据库里有,缓存里也有。

但是我们往往在setKey的时候都会设置时间。

如果这个key属于热点数据,那么在这个key过期的一瞬间,大量请求就会直达数据库。

缓存雪崩:

某一时刻发生大规模的缓存失效。

真鸡儿奇怪,翻翻网上的资料博客,很多都在那举缓存服务宕机的例子。

爷就笑了,那你直接说缓存服务不可用就行了,非要起个[雪崩]的名字,还搁那copy呢?

我的理解:

我们假定,发明缓存雪崩这个名词的人,他的意思是:某一时刻发生大规模的缓存失效。

那么就最少最少存在2种情况,雪崩发生时,缓存服务是否宕机?

1、如果宕机

这就叫缓存服务不可用问题。

考点和知识点是如何搭建高可用缓存服务。

2、如果没宕机

那就是你缓存服务中的key出现了同时的大面积的过期失效。

考点和知识点是热点数据集中失效问题。

问题解决

缓存穿透:缓存控对象 or 布隆过滤器

缓存击穿:分布式锁

热点数据集中失效:key过期时间+随机值,让过期时间错开。

宕机:请自行研究如何搭建高可用缓存服务,以及业务接口的限流和降级。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值