缓存雪崩:就是某一时间大量的key全部失效,这时候都会直接去访问数据库,导致数据库宕机
解决方案:
1)给key设置一个随机的过期时间
2)保持缓存层的高可用性,避免redis宕机
3)服务降级和熔断
4)缓存不过期
5)分布式锁
缓存穿透:就是数据库和缓存中都不存在的数据,用户故意发送大量请求导致数据库宕机
解决方案:
1)将不存在的数据缓存到redis中去,将key和value都设置成null,并设置一个较短的过期时间
2)拉黑ip地址
3)对参数进行校验,对不合法参数进行拦截
4)布隆过滤器
缓存击穿:大量请求的热点key数据突然失效了,这样导致了大量的请求访问数据库,导致数据库宕机
解决方法:
1)设置热点数据永不过期
2)分布式锁
总结:雪崩就大面积的key失效,穿透就是redis和数据库不存在某个数据,击穿就是某一个热点key突然失效