记录缓存穿透、缓存击穿、缓存雪崩原因以及解决方案

本文深入探讨了缓存系统的三大问题:缓存穿透、缓存击穿和缓存雪崩,以及针对这些问题的解决方案。缓存穿透可通过将不存在的键值对(如null)存入缓存来缓解;布隆过滤器是另一种有效手段,通过多个哈希函数降低误判率。缓存击穿可采取热点数据设置永不过期或使用分布式锁来避免。缓存雪崩则建议采用随机过期时间来防止数据同时失效。这些策略有助于保障系统的稳定性和高可用性。
摘要由CSDN通过智能技术生成

缓存穿透、缓存击穿、缓存雪崩原因以及解决方案

1.缓存穿透:请求大量不存在redis、数据库中的数据导致数据库宕机

redis缓存穿透问题解决方案:

1.把不存在的key存入redis中,值为null也存入(例如:id=-1,这种不存在的id,或者说是恶意伪造的id,查询数据库的结果存入redis中,此种方法不好)
2.使用布隆过滤器。

布隆过滤器:二进制的数组,里面存储的是(0/1)数据经过hash算法,在布隆过滤器中校验,如果查询的key经过各种hash算法都为1(只要有一个二进制不是1就不存在),则存在布隆过滤器中。说明数据存在不是恶意伪造数据,可以到redis,数据库中查询。

ps:不的key可能hash值相同,hash算法越多,误差率越低,性能越差

2.缓存击穿:redis中热点数据过期(双11x宝的门户首页数据),大量请求到数据库,导致数据库宕机

缓存击穿解决方案:

1.热点数据设置设置永不过期(不建议)
2.用分布式锁,待补充…

3.缓存雪崩:由于redis中存储的数据大面积同时到期,大量请求到数据库,导致数据库宕机

缓存雪崩解决方案:

1.存储在redis中的数据过期时间设置为2h+随机数分钟,让redis中的数据不会出现大面积同时过期的情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值