redis 缓存穿透 缓存击穿 缓存雪崩

定义:

1、缓存穿透:查询不存在缓存及不存在于数据库的数据;如果一直查询,每次都会从数据库中查询且因为没有数据,所以也不会反填到缓存中;那么查询这种数据就失去了缓存的意义,并且会给数据库带来压力。这就是缓存穿透。可能是黑客攻击或者恶意攻击造成的。
2、缓存击穿:redis中某个key过期了,而正好一个时间点这个key正好被大量访问,就会造成缓存击穿。
3、缓存雪崩:在极短时间段内,大量的key过期,并且被访问,造成直接访问数据库,从而导致数据库压力过大,使整个服务器崩溃。

解决方案:

缓存穿透:
1)对空值进行缓存,可以设置比较短的过期时间
2)设置可以访问的白名单
3)布隆过滤器:将所有可能存在的数据哈希到一个足够大的bitmaps中去,一个一定不存在的数据会被这个bitmaps拦截掉,从而避免了对底层数据的查询压力。
4)对redis进行实时监控。

缓存击穿:
1)预先设置热门数据key,并且增加过期时长
2)实时监控,如果发现某些key被访问的比较频繁,就增加过期时间的时长
3)使用锁:例如使用redis自己的SETNX锁

缓存雪崩:
1)多级缓存
2)分散过期时间

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

相关阅读更多精彩内容

友情链接更多精彩内容