> 雪崩
描述:指大量缓存在同一时间失效,大量请求直接打到mysql,引起mysql宕机,此时的Redis的作用等同于失效
解决方案:不同key设置随机的有效时长
> 穿透
描述:请求一个不存在的数据,即缓存查不到,mysql也查不到,作为黑客,发起大量类似的请求,意味着这些个请求都是直接打到mysql
解决方案:
①同一个IP做访问限制,每秒最多***请求,超出限制数量的直接拉黑(NGINX自有能力);
②做简单参数校验,比如id>0,分页大小;
③不存在的key直接缓存为null,缓存时间设置短一点(30秒),避免数据不可用;
④利用布隆过滤器的特性(存在的不一定存在,不存在的一定不存在)
> 击穿
描述:一个Redis非常热点的key(比如首页配置)突然失效,出现了大并发,所有请求直接打发mysql
解决方案:
①热点数据永不过期,如果有更新,同步刷新缓存数据;
②加互斥锁
全局解决方案:增加令牌桶限流器