大家好,我是发财!之前分享过16道Redis灵魂拷问面试题及Redis分布式锁,今天给小伙伴说说大厂面试高频必问点(缓存穿透,雪崩等问题)!有自己看法的也可以在评论区留言探讨,也可以转发关注下我以后会长期分享!
阿里Java研发三面:说说Redis缓存雪崩,穿透,击穿,降级解决方案
一、缓存雪崩
1、什么是缓存雪崩?
如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,造成了缓存雪崩由于原有缓存失效,新缓存未到期间所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。
举例来说, 我们在准备一项抢购的促销运营活动,活动期间将带来大量的商品信息、库存等相关信息的查询。 为了避免商品数据库的压力,将商品数据放入缓存中存储。 不巧的是,抢购活动期间,大量的热门商品缓存同时失效过期了,导致很大的查询流量落到了数据库之上。对于数据库来说造成很大的压力。
2、有什么解决方案来防止缓存雪崩?
1、加锁排队
mutex互斥锁解决,Redis的SETNX去set一个mutex key,当操作返回成功时,再进行加载数据库的操作并回设缓存,否则,就重试整个get缓存的方法
2、数据预热
缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请求的时候