admin管理员组文章数量:1794759
Redis常见面试题(缓存击穿、穿透、雪崩)
Redis常见面试题(缓存击穿、穿透、雪崩) 击穿
场景:
一般由于redis中的数据到期,同时并发用户特别多,此时大量请求压到数据库上。
解决思路:
根据redis是单进程单实例的特性,当高流量进入redis时,可以认为是在队列中依次执行,当请求发现key过期时,可以设置锁。
流程:
问题1:
如果拿到锁以后的请求挂掉了,但是锁没有释放,会造成其他请求一直在等待锁的释放。
问题1解决方法:
对这个锁加过期时间,到了过期时间还没释放,就自动释放。
问题2:
如果请求没挂掉,但是锁的过期时间已经到了,数据还没取出来,会导致其他请求又设置锁,进入数据库取数据。。。
问题2解决方法:
再开启一个线程,对第一个取数据的线程进行监控,如果没挂掉,就适当延长锁的过期时间。
穿透场景:
大量请求访问redis以及数据库中没有的数据,导致异常流量到达数据库查询返回null的结果。
解决思路:
加过滤器,拦截异常请求。
流程:
在客户端实现布隆过滤器的算法,或者直接在redis中集成布隆过滤器。同样的过滤器还有布谷鸟过滤器等。
雪崩场景:
大量的key同时失效,造成大量访问压到数据库上。
解决思路:
首先要区分失效的key是否和时点性相关,然后采取不同的解决办法。
流程:
版权声明:本文标题:Redis常见面试题(缓存击穿、穿透、雪崩) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686563489a82327.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论