缓存穿透、击穿、雪崩

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

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

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

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

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

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

你可能感兴趣的:(缓存穿透、击穿、雪崩)