高频面试题-如何避免Redis中缓存穿透、缓存雪崩问题?

Redis,因为其速度快等各方面的原因,被开发人员一直应用于企业级开发。

而一旦开始使用Redis,就必然要考虑的问题就当属缓存穿透、缓存雪崩的问题了,这也是面试过程中很容易问到的点了,下面我们就来聊一下这些吧。

1. 什么是缓存穿透?

缓存穿透是指当查询一个不存在的数据,由于无法命中对应的值,就会一直需要去数据库中查询;所以这个时候Redis并没有起到减少查询的次数,失去了使用Redis的初心,反而性能方面有了更大的消耗,就会造成整体的性能下降。

2. 如何解决缓存穿透问题?

一句话答案:给没有命中的key值设置‘空值’。

虽然无法命中对应的值,但是我们依然要给对应的key设置空值。

这样,我们就又可以降低直接访问数据库的次数,从而一定程度上提高了系统性能。

3. 什么是缓存雪崩?

雪崩时,没有一片雪花是无辜的。 

缓存雪崩是指当一批缓存数据均设置了相同的过期时间时,会导致一批缓存数据同一时间失效,届时就会存在大批的请求同时去访问数据库,会造成数据库的瞬时压力过大,造成雪崩。

4. 如何解决缓存雪崩问题?

一句话答案:给缓存数据的key设置不同的过期时间

缓存雪崩问题就是同一时间缓存过期问题,所以只需要给缓存数据设置不同的过期时间即可。

由于系统内部业务的限制,可以在某一个区间内取随机值,如:30分钟-60分钟之间的任意值;这样即便会存在相同过期时间,也不会很多。

当然了,如果你系统业务缓存量级比较大,加大区间就可以了。

前段时间,在和群友聊天时,把今年他们见到的一些不同类别的面试题整理了一番,于是有了以下面试题集,也一起分享给大家~

如果你觉得这些内容对你有帮助,可以加入

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值