缓存雪崩
同一时刻有大量key失效,导致大量请求到数据库
解决方案1:key失效时间加上随机值,或者更高级的算法分散失效时间。
解决方案2:没有数据时也cache下,过期时间可设置短点,不把过多请求打到db去
缓存穿透
当查询Redis中没有的数据时,该查询会下沉到数据库层,同时数据库层也没有该数据,当这种情况大量出现或被恶意攻击时,接口的访问全部透过Redis访问数据库,而数据库也没有这些数据,我们称这种现象为缓存穿透
解决方案1:请求用户做鉴权校验,参数校验,非法直接返回。
解决方案2:使用布隆过滤器
缓存击穿
缓存击穿是指一个key非常热点,在不停的抗着大并发,大并发集中对这一点进行访问,当这个key失效的瞬间,持续的大并发就穿透缓存,直接请求数据库。
解决方案1:设置热点key永不过期,异步更新
解决方案2:更新热点key时加锁,同一个key最好只有一个请求到数据库
解决方案3:接口限流、熔断、降级