
Redis常见面试题(缓存击穿、穿透、雪崩)
Redis常见面试题(缓存击穿、穿透、雪崩) 击穿
场景:
一般由于redis中的数据到期,同时并发用户特别多,此时大量请求压到数据库上。
解决思路:
根据redis是单进程单实例的特性,当高流量进入redis时,可以认为是在队列中依次执行,当请求发现key过期时,可以设置锁。
流程:
问题1:
如果拿到锁以后的请求挂掉了,但是锁没有释放,会造成其他请求一直在等待锁的释放。
问题1解决方法:
对这个锁加过期时间,到了过期时间还没释放,就自动释放。
问题2:
如果请求没挂掉,但是锁的过期时间已经到了,数据还没取出来,会导致其他请求又设置锁,进入数据库取数据。。。
问题2解决方法:
再开启一个线程,对第一个取数据的线程进行监控,如果没挂掉,就适当延长锁的过期时间。
穿透场景:
大量请求访问redis以及数据库中没有的数据,导致异常流量到达数据库查询返回null的结果。
解决思路:
加过滤器,拦截异常请求。
流程:
在客户端实现布隆过滤器的算法,或者直接在redis中集成布隆过滤器。同样的过滤器还有布谷鸟过滤器等。
雪崩场景:
大量的key同时失效,造成大量访问压到数据库上。
解决思路:
首先要区分失效的key是否和时点性相关,然后采取不同的解决办法。
流程:
👁️ 阅读量:0
© 版权声明:本文《Redis常见面试题(缓存击穿、穿透、雪崩)》内容均为本站精心整理或网友自愿分享,如需转载请注明原文出处:https://www.zastudy.cn/wen/1686563709a293283.html。