缓存穿透、击穿、雪崩

1、缓存穿透

    用户用不存在的key发起请求,如id=-1,或者过大的id,会不断访问db,量大时会导致数据库挂掉。

解决方法:

(1)、增加key值校验。

(2)、缓存设置,即使数据库中不存在的值也在写入到缓存中,如(-1,null)等,可以设置有效时间短些,防止单id反复攻击。

2、缓存击穿

    缓存中存在的key,在失效的时候,大量对此数据的请求去访问数据库,导致数据库的压力瞬间提升。

解决方法:

(1)、设置热点数据永不过期

(2)、加互斥锁

3、缓存雪崩

    相对于击穿,大量的key同时失效,导致大量请求同时访问db,引起db压力骤增,导致雪崩。

解决方法:

(1)、热点数据永不过期

(2)、可以失效时间分布设置,防止同一时间大量key同时失效。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。