1.缓存雪崩
大量key同时失效,大量请求发送到db上,导致db宕机。
1.解决办法
设置key过期时间时,使用随机数
setRedis(Key,value,time + Math.random() * 10000);
2.缓存穿透
大量请求请求一个缓存中没有的key,这些请求直接怼到db上,造成宕机。如发送为负数的入参时。(一般为黑客侵入)
- 加入入参的验证,防止非法入参。
- nginx加入拦截,防止同一个ip大量的请求。
- 使用布隆过滤器判断数据库是否存在,不存在直接返回。
3.缓存击穿
热点key突然失效,大量的请求怼到db,db宕机。
- 设置热点缓存不过期
- 加入互斥锁