在电商大促(如双11、618)期间,首页往往承载着全站最大的流量。如果首页的热点数据(如大促活动配置、爆款商品列表、轮播图等)在缓存中突然失效(过期或被淘汰),会导致瞬时海量并发请求直接打向数据库,这种现象被称为“缓存击穿”,极易导致数据库瞬间瘫痪。 针对电商大促的极端高并发场景,通常不能单纯依赖单一手段,而是需要组合拳来防止缓存击穿。以下是行业内成熟的解决方案: --- 一、 核心策略:缓存过期机制改造 首页热点数据的最大特点是“读多写少”且“允许短暂的最终一致性”。基于此,首选以下两种策略: 1. 逻辑过期(推荐,各大厂首页首选) 在缓存的 Value 中增加一个 (逻辑过期时间)字段,而 Redis 本身的物理过期时间设为永不过期(或设置一个极长的时间)。 工作流程: 1. 业务线程查询缓存,发现数据已达到逻辑过期时间。 2. 业务线程直接返回当前的旧数据给用户(保证首页绝对不卡顿)。 3. 同时,业务线程尝试获取一个分布式互斥锁(如 Redis 的 )。 4. 获取锁成功的线程,开启一个异步线程去查询数据库并更新缓存,更新完成后释放锁。 5. 其他获取锁失败的线程,同样直...