1、缓存穿透
用户用不存在的key发起请求,如id=-1,或者过大的id,会不断访问db,量大时会导致数据库挂掉。
解决方法:
(1)、增加key值校验。
(2)、缓存设置,即使数据库中不存在的值也在写入到缓存中,如(-1,null)等,可以设置有效时间短些,防止单id反复攻击。
2、缓存击穿
缓存中存在的key,在失效的时候,大量对此数据的请求去访问数据库,导致数据库的压力瞬间提升。
解决方法:
(1)、设置热点数据永不过期
(2)、加互斥锁
3、缓存雪崩
相对于击穿,大量的key同时失效,导致大量请求同时访问db,引起db压力骤增,导致雪崩。
解决方法:
(1)、热点数据永不过期
(2)、可以失效时间分布设置,防止同一时间大量key同时失效。