缓存击穿、缓存雪崩、缓存穿透几解决办法

一.缓存穿透:访问一个缓存和数据库都不存在的key,此时会直接打到数据库,并且查不到数据,没办法写缓存,所以下一次仍然打到数据库上;这样的话,缓存起不到作用,流量大时会直接导致数据库扛不住挂掉;

解决方案:

  1.接口校验,正常情况下不会出现这种情况,例如被爬虫这种非法攻击会出现;为了避免,就可以在最外层做个校验保护,例如用户鉴权、数据合法性校验等;例如查询商品ID,ID为正整数,则可以对非正整数进行过滤;

2.缓存空值,当访问缓存和DB都没有查到数值时,可以将该控制写入缓存,可以设置较短的过期时间;

3.使用布隆过滤器,使用布隆过滤器存储说有可能访问的key,不存在的直接过滤掉;存在的key则在进入查询缓存和数据库

二、缓存击穿:当一个热点key,在缓存过期的一瞬间,有大量的请求访问,会直接打到数据库,造成瞬间数据库承受的压力很大,甚至打垮数据库;

解决办法:

1.加互斥锁

2.热点数据设置不过期

三、缓存雪崩:大量的热点数据设置相同的过期时间,失效后,大量的请求直接打到数据库,数据压力聚增,瞬间雪崩

解决方法:

1.加互斥锁

2.热点数据不过期

3.热点数据设置不同的过期时间【过期时间打散】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值