Redis面试题-缓存雪崩、缓存穿透、缓存击穿问题

本文讨论了缓存一致性问题,包括缓存击穿(热点数据失效导致数据库压力增大)、缓存穿透(不存在数据导致数据库频繁查询)和缓存雪崩(大量key同时失效)。提供了解决方案,如提前预热、使用布隆过滤器、多级缓存架构和随机过期时间等。
摘要由CSDN通过智能技术生成

1 穿透: 两边都不存在(皇帝的新装) (黑名单) (布隆过滤器)

2 穿:一个热点的key失效了,这时大量的并发请求直接到达数据库. (提前预热

3 雪崩:大量key同时失效 (避免大量的key同一时间失效,错峰

缓存击穿


      突发热点访问时,热点数据在Redis缓存中不存在或已过期。大量的对热点数据的访问,都将直接访问数据库,造成数据库访问压力短时激,从而增造成故障。

   缓存穿透


       数据在Redis缓存和数据库中都不存在。大量访问这种数据时,数据库频繁查找数据,造成压力过大,从而产生故障。应用场景: 壹:非正常数据访问;贰:黑客攻击。

缓存雪崩


       大量key集中过期,数据库短时访问量激增。类似击穿的发生场景。

二、解决方案 
      1.解决缓存击穿
提前预设热门缓存数据
实时调整过期时间、自动续期
使用锁
缓存数据不存在时,把数据库数据放入缓存
       2.解决缓存穿透
对不存在的数据进行数据空值缓存
设置白名单;(•可访问的数据id作为偏移值存入bitmaps;•访问时先检查bitmaps)
使用布隆过滤器
对黑客攻击进行实时监控
       3.解决缓存雪崩
多级缓存架构(Nginx-本地缓存(ehcache/guava) -Redis)
锁或队列对并发访问进行序列化
Key设置过期标志,对即将过期数据进行提前更新,自动续期(类似击穿的解决方案)
数据的过期时间使用随机值,分散过期时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冰冰很社恐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值