缓存雪崩是应用系统指在某个时间点上,缓存中的大部分数据同时失效,导致大量的请求直接访问底层数据库或后端服务,从而造成数据库负载剧增,甚至导致数据库崩溃的情况。
可以使用锁机制来避免多个相同的请求同时访问数据库,只让一个或少量请求去加载数据,其他请求等待。
参考如何防止缓存击穿文章锁章节:✅ 如何解决缓存击穿?
在系统启动时或者活动开始前,将热门数据预先加载到缓存中,避免在高并发访问时出现数据不存在缓存中,还需要去数据库加载问题。
参考数据如何缓存预热文档:✅ 缓存如何预热?
对于一些热点数据,可以设置永不过期,以保证这部分数据始终在缓存中可用。同时,需要保障缓存设置的内存淘汰策略是不淘汰或者从带过期时间 Key 中去淘汰。
比如说一个电商秒杀系统,可以直接让秒杀的商品的
关于缓存淘汰策略,可以参考:✅ Redis 常用内存淘汰策略?
避免所有缓存在同一时间点失效,可以采用随机分布的方式设置缓存失效时间,或者使用带有随机偏移的失效时间。
通过以上几种方案组合使用,可以一定程度上减少缓存雪崩的可能性。