Redis缓存雪崩、穿透、击穿以及解决方案

redis缓存雪崩

redis雪崩是指redis在某个时间大量的key失效,突然造成数据库访问压力增大,像雪崩一样。

redis雪崩危害巨大,可能会导致服务器宕机。

解决方案:

1:缓存失效时间为随机值。

2:根据不同类型的缓存,做好失效时间策略。

3:采取多级缓存。

Redis缓存穿透

缓存穿透,是指缓存和数据库中都没有的数据,用户不断发起请求,由于该数据不在缓存中,所以会一直访问数据库,造成数据库压力过大。

解决方案:

1:对于一些不合理的key,直接返回空。(例如查询是,id为负数的请求)

2:对于数据库为null的数据,也缓存起来。

Redis缓存击穿

缓存雪崩是大量的key,同一时间失效。缓存击穿则是某一个key在失效的一瞬间,大量的并发请求到达服务端,造成瞬间数据库压力过大:,如秒杀活动等。

解决方案:

1: 对于热点key,设置为永不过期。(会造成缓存中存在大量的key,而这些key的访问频率并不高,同时也要考虑缓存与数据库的同步问题)

2:使用分布式锁,保证同一时间只有一个线程去访问数据库,其他线程等待。(会降低服务器的相应时间,也可能存在死锁等风险)

总结

缓存存在的意义就是为了减轻数据库的查询压力,从而提高服务的QPS。而缓存的雪崩、穿透、击穿都是在缓存失效的时候出现的。所以对于缓存的时候,需要结合业务,来处理相关的情况。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容