缓存击穿,缓存穿透、缓存雪崩 定于与解决方案

缓存击穿:

定义:缓存中的key一般设有过期时间,如果某一个key过期了,就在这个时候,有大量的并发请求访问这个key,则这些请求会直接到DB,导致DB瞬间的压力过大,压垮DB

解决方案:

  • 设置互斥锁,当缓存失效的时候不是立即去访问数据库,而是使用缓存工具的操作成功带回返回值的操作,比如redis的setnx(set if not exit)
  • 提前使用互斥锁,分别给redis和数据的超时时间
  • 设置数据永远不过期

缓存穿透:

定义:指有人用用具库中不存在某个key访问,数据库中没有这个key值,自然缓存中也没有,改请求直接到数据库,如果key的访问量很大,就会压垮数据库。

解决办法:

  • 对查出结果为空的key,也在缓存中建了一个key - value对,只是过期时间设置的短一些。

缓存雪崩:

定义:指缓存中大量的数据在同一时间失效,这是就会有大量的请求直接到数据库,造成数据库压力过大。

解决办法:

  • 错开失效时间
  • 加锁,加队列,如MQ,存放在队列中,慢慢处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值