缓存雪崩是指在短时间内,大量缓存key同时失效(或缓存服务整体故障),导致原本应该由缓存承接的请求全部涌向数据库,造成数据库压力骤增,甚至宕机的现象。
它的核心特点是:失效具有“批量性”和“突发性”,数据库无法承受瞬间的流量冲击,进而可能引发整个系统的连锁故障(如服务超时、接口报错等)。
缓存雪崩的典型场景
大量key集中过期
例如:系统初始化时,为一批热点数据设置了相同的过期时间(如24小时),24小时后这些key会同时失效,所有访问这些数据的请求都会直接穿透到数据库。缓存服务崩溃
例如:Redis集群因网络故障、硬件问题或内存溢出等原因整体不可用,此时所有依赖缓存的请求都会直接打到数据库。
与缓存击穿的区别
- 缓存击穿:针对单个热点key,当它失效时,大量请求穿透到数据库。
- 缓存雪崩:针对大量key或缓存服务本身,失效范围更广,影响更严重(可能导致数据库宕机)。
缓存雪崩的危害
- 数据库瞬间压力过载,响应时间大幅增加,甚至直接宕机。
- 依赖数据库的服务出现超时、报错,引发“级联故障”(如API服务不可用、前端页面加载失败)。
- 可能导致业务中断,造成经济损失(如电商促销期间订单系统瘫痪)。
例如:某电商平台在“双11”零点活动中,大量商品缓存key设置了相同的过期时间,零点时缓存集中失效, millions级请求瞬间涌入数据库,导致数据库宕机,订单无法提交。