Redis之雪崩、穿透、击穿

> 雪崩

描述:指大量缓存在同一时间失效,大量请求直接打到mysql,引起mysql宕机,此时的Redis的作用等同于失效

解决方案:不同key设置随机的有效时长

> 穿透

描述:请求一个不存在的数据,即缓存查不到,mysql也查不到,作为黑客,发起大量类似的请求,意味着这些个请求都是直接打到mysql

解决方案:

①同一个IP做访问限制,每秒最多***请求,超出限制数量的直接拉黑(NGINX自有能力);

②做简单参数校验,比如id>0,分页大小;

③不存在的key直接缓存为null,缓存时间设置短一点(30秒),避免数据不可用;

④利用布隆过滤器的特性(存在的不一定存在,不存在的一定不存在)

> 击穿

描述:一个Redis非常热点的key(比如首页配置)突然失效,出现了大并发,所有请求直接打发mysql

解决方案:

①热点数据永不过期,如果有更新,同步刷新缓存数据;

②加互斥锁

全局解决方案:增加令牌桶限流器

原文地址:https://www.cnblogs.com/wupeiky/p/14659021.html