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

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


雪崩、击穿、穿透都是因为缓存没有承担请求压力,而导致数据库请求压力增大的结果,只不过“失职”的原因不同

1、缓存雪崩

概念

缓存雪崩是由于大量缓存同时失效,读请求的压力在一瞬间从缓存转移到数据库

缓存失效可能的原因有两个:

  • 大量缓存同时过期
  • 缓存集群整体崩溃

解决方案

  • 针对相同过期时间的数据,对过期时间设置一个较小的随机数
  • 在发生雪崩时对该请求进行熔断或降级
  • 构建缓存集群高可用

2、缓存击穿

概念

少量热点数据失效,使读请求的压力在一瞬间从缓存转移到数据库

解决方案

  • 对于热点数据不设置过期时间

3、缓存穿透

概念

雪崩和击穿是由于缓存失效导致的,而穿透是由于数据问题导致的

导致数据问题的原因有两个:

  • 业务层逻辑错误,导致数据丢失,这样数据肯定不会缓存
  • 恶意攻击,专门访问不存在的数据

解决方案

  • cache null,不存在的数据也缓存空值,虽然缓存里有脏数据但是可以减轻数据库压力
  • 使用布隆过滤器判断数据有效性。布隆过滤器是位图,发生写请求时,在数据正常入库的同时,对请求做多次hash和取余,计算出位图的若干位置并置1;接收读请求时,先到位图里判断数据是否存在,再读缓存数据或请求数据库获取数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Wheat_Liu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值