缓存穿透、击穿、雪崩

redis常见的问题及解决方案:
1、缓存穿透:缓存中查不到数据,数据库中也查不到。
解决方案:

1》对查询条件的参数进行合法性校验
2》将查不到的数据也写到redis中,给一个null值,并设置一个短的过期时间
3》引入布隆过滤器(有一定的误判可能,且布隆过滤器只能加数据不能减数据,避免标志位上的其他数据失效)

2、缓存击穿:缓存中查不到数据,数据库中能查到。
一般出现在数据初始化及key过期的情况下,key过期重新写入需要时间,高并发下就会出现这个问题,请求都打到数据库上了
解决方案:

1》设置热点数据永不过期。(在数据中加一个逻辑过期重加载到时间,另起一个线程定期扫描加载)
2》加载数据的时候避免高并发

3、缓存雪崩:缓存大面积过期,请求都打到数据库上。
解决方案:

1》把缓存的过期时间分散开,比如在统一的过期基础上加一个随机数
2》热点数据永不过期

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容