天天看点

缓存雪崩,穿透和击穿

缓存雪崩,穿透和击穿

1.缓存雪崩

大量key同时失效,大量请求发送到db上,导致db宕机。

1.解决办法

设置key过期时间时,使用随机数

setRedis(Key,value,time + Math.random() * 10000);      

2.缓存穿透

大量请求请求一个缓存中没有的key,这些请求直接怼到db上,造成宕机。如发送为负数的入参时。(一般为黑客侵入)

  1. 加入入参的验证,防止非法入参。
  2. nginx加入拦截,防止同一个ip大量的请求。
  3. 使用布隆过滤器判断数据库是否存在,不存在直接返回。

3.缓存击穿

热点key突然失效,大量的请求怼到db,db宕机。

  1. 设置热点缓存不过期
  2. 加入互斥锁