缓存雪崩:Redis中缓存的数据大面积同时失效,或者Redis宕机,从而会导致大量请求直接到数据库,压垮数据库。
缓存雪崩和缓存击穿的区别在于这里是针对很多key的缓存。
对于一个业务系统,如果Redis宕机或大面积的key同时过期,会导致大量请求同时打到数据库,这是灾难性的问题。
//解决方案一 构建多级缓存框架:nginx缓存+redis缓存+其他缓存(ehcache等) //解决方案二 用加锁或者队列的方式保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量并发请求到达底层数据库中,不适合高并发情况。 //解决方案三 设置过期标志更新缓存,记录缓存数据是否过期,设置提前量,如果过期会触发通知另外的线程在后台去更新实际key的缓存。 //解决方案四 将缓存的失效时间分散开,将多个key的过期时间设置不同,他们的失效时间不一致。 //解决方案五 数据预热,对于即将来临的大量请求,我们可以提前走一遍系统,将数据提前缓存在Redis中,并设置不同的过期时间。 //解决方案六 保证Redis服务高可用,Redis的哨兵模式和集群模式,为防止Redis集群单节点故障,可以通过这两种模式实现高可用。



