什么是Redis缓存雪崩、缓存穿透和缓存击穿?

169 阅读3分钟

什么是Redis缓存雪崩、缓存穿透、缓存击穿?关于这个问题至少有20位以上的粉丝咨询过我。这确实是一道互联网大厂的高频面试题。今天,我给大家来聊一聊。

另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到。

好了,首先来说一下,缓存的作用。

1.缓存的作用

一般情况下,1.用户请求到后台,会先从缓存中取数据,如果在缓存中取到数据,就直接返回结果,如果取不到数据就需要查询数据库,从数据库中取数据,从数据库中取到数据后会同步更新到缓存,并返回结果。下一个用户就可以直接从缓存中取值了。那如果在数据库也没有取到,就只能直接返回空结果。所以,缓存主要的作用就是缓解数据的负载压力,提升请求响应效率。

那什么是缓存雪崩、缓存穿透和缓存击穿呢?

2.如何理解

举个例子,就好比是有个畅销商品,比如前段时间比较火的冰墩墩经常卖断货。那如果商品断货呢分为三种情况,第一种情况是门店和厂家都有存货,第二种情况是,门店和厂家都没有存货,第三种情况是,门店无货和厂家存货。

缓存雪崩就是,门店和厂家都有存货,但是卖得实在是太火爆了,排队的人太多导致门店一时间无法承受这么大压力,因此排队的用户就都去找厂家买了,从而导致厂家短时间内也要承受了很大的压力响应不过来。

缓存穿透就是,门店和厂家都没有货了,客户把厂家的电话都打爆了,但还是只能等着。

缓存击穿就是,门店无货了但是厂家还有货,所以,客户就把电话打到厂家,导致厂家的压力瞬间暴增。

如果想了解官方的详解解释和解决方案,请关注我的主页,看下一期视频讲解。

3.总结

大家不要被表面的文字所迷惑,不管是缓存雪崩、缓存穿透还是缓存击穿,都是指缓存失效或者异常,导致访问压力流转到数据库,从而使得数据库负载过高。那么缓存异常的场景还有缓存预热异常、缓存降级异常等等,我总结了一张脑图供大家参考和学习,有需要的小伙伴可以关注我的主页介绍。

我是被编程耽误的文艺Tom,

本文为“Tom弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。 关注微信公众号『 Tom弹架构 』可获取更多技术干货!

我是被编程耽误的文艺Tom