缓存穿透、缓存击穿、缓存雪崩及解决方案(学习笔记)

前言
通常在业务中使用的缓存流程基:

  • 前端请求后台
  • 先从缓存中取数据
  • 取不到数据后,从数据库去查数据,并缓存起来返回数据
  • 如果取不到就返回空结果
1.缓存穿透

指的是缓存和数据库都没有的数据,而用户不断的发起请求,比如发一个负数id去请求后端,每次都会去查下游数据库,这样并发量多的话,就会导致数据库压力过大。
解决方案:

  • 1.在接口处进行校验
  • 2.缓存取不到的数据为空,并设置较短的过期时间,可以减少攻击
  • 3.使用布隆过滤器
2.缓存击穿

一般我们会对缓存的key设置过期时间,在高并发下,如果在某一时刻这个key刚好过期,此时持续的大并发请求都会穿破缓存,直接访问下游数据库,造成下游数据库的压力瞬间变大
解决方案:
- 通过分布式锁或者队列,使得同一个key只允许一个线程到数据库查询
- 定时预先更新缓存,避免发生缓存失效的情形

3.缓存雪崩

就是在某个时候,缓存中的大量key失效,在高并发的情况下,会直接访问到下游数据库,这样就使得下游数据库的压力瞬间变大
解决方案:
1.不同的key使用不同的时间来过期数据,
2.设置缓存永不过期
3.定时设定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值