缓存雪崩
缓存雪崩是由于原有缓存失效(过期),导致数据未加载到缓存中。或者缓存同一时间大面积失效,从而导致所有请求都去查询数据库,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。
原因和解决办法:
一、缓存大面积的同时失效
避免缓存设置相近的有效期
1)为有效期增加随机值
2)统一规划有效期,失效时间均匀分布
二、对热点数据的持续高并发
互斥锁
jvm锁机制
分布式锁机制
三、有效期本身的机制
缓存永不过期,异步更新
优点:不阻塞线程,用户体验好,不会出现雪崩效应;
缺点:不保证一致性,代码复杂度增大(每个value都要维护异步更新代码),容易规程垃圾数据;