缓存雪崩、缓存穿透、缓存击穿的理解以及如何避免?

本文详细阐述了缓存雪崩、缓存穿透和缓存击穿的概念及其原因,提出了相应的解决方案。对于缓存雪崩,原因是缓存过期时间设置相同,解决方案包括增加随机过期时间和提高缓存中间件的高可用性。缓存穿透的核心问题是攻击行为导致大量不存在的key请求数据库,解决方案是将无效key存入缓存并设置特殊值,或使用布隆过滤器。缓存击穿则发生在热点key失效时,建议对这类key不设置失效时间或重写缓存。

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

缓存雪崩

(1)什么是缓存雪崩

缓存雪崩就是存储在缓存里面的大量数据在同一个时刻全部过期,原本缓存组件能够扛住大部分流量,全部请求到了数据库,从而导致数据库压力增加,造成数据库服务器的崩溃一种现象。

在这里插入图片描述

(2)导致缓存雪崩的原因
  1. 中间件宕机(可以对缓存中间件做高可用来避免)
  2. 缓存中大部分key都设置了相同的过期时间(可以在失效时间里面去增加1-5分钟的随机值,避免同时失效的问题)

缓存穿透

(1)什么缓存穿透

缓存穿透表示段时间内有大量的不存在key请求到应用程序里面,而这些不存在key,在缓存里面又找不到,从而导致全部的请求,全部穿透到了数据库,造成数据库压力增加

(2)造成缓存穿透的核心问题

缓存穿透的核心问题针对缓存的一种攻击行为,正常业务里面,即便是出现这样一个不存在key的情况,由于缓存的不断预热影响也不会很大,而攻击行为呢,就需要去具备时间的持续性,而只有key确定在数据库里面不存在的情况下,才能达到这样一个目的

(3)怎么解决缓存穿透

把无效的key保存到redis里面,并且设置一个特殊的值,比如像“null”字符串,下次再来访问的时候,就不会查询数据库了

2

但是如果攻击者不断的用随机不存在的k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我黄同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值