面试题:缓存穿透、缓存击穿、缓存雪崩

缓存穿透

概念

在缓存和数据库里均不存在对应的数据, 如果没做拦截的话,可能每次都会从数据库里查。

怎么解决

1、对数据要进行合法性检验,需要有一个白名单,如果不在白名单里,就直接返回。

2、如果这个缓存是全量的,那不在缓存里就直接返回,就不用再查数据表了。

3、每次查库之后即使是空结果也做个缓存,限定下过期时间,比如3分钟过期,这样也会减少一些压力。

4、这类请求不排除人为伪造的可能,如果请求量大的话,可以在服务器里设置黑名单。

缓存击穿

概念

某个key对应的数据访问量极大,而在缓存中又过期了,导致每次都要从库里查。

怎么解决

1、对热点数据不设置过期时间,或者存在过期时间,但后台会对这个数据进行定期更新。

2、从库里取之前,可以加个锁,以尽可能减少对数据库的访问。取到数据之后要及时更新到缓存,采DCL机制,后面的请求就可以从缓存中取了。

缓存雪崩

概念

大量缓存在某一个时间段同时失效,数据又从库里取了。

怎么解决

1、在设置过期时间时,不要设置一个定值,可以有一定的浮动空间,减少同时过期的可能。

2、做好服务的融断降级处理,缓存里没数,查库是必须的,如果不能及时响应,给用户尽可能做些友好提醒。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值