热点 Key 缓存击穿防护:过期瞬间 DB 被打垮?逻辑过期+互斥锁重建+后台预热
问题背景 在高并发系统中,缓存是提升性能的关键手段。但你是否遇到过这样的场景: 10:00:00.000 [redis] Key "product:1001" expired 10:00:00.001 [http-1] Cache miss for "product:1001", querying DB... 10:00:00.002 [http-2] Cache miss for "product:1001", querying DB... 10:00:00.003 [http-3] Cache miss for "product:1001", querying DB... ... 10:00:00.100 [DB] Connection pool exhausted! 当一个热点 Key(如秒杀商品)过期的瞬间,大量请求同时穿透到数据库,导致数据库压力骤增,甚至宕机。这就是缓存击穿问题。 缓存击穿 vs 缓存穿透 vs 缓存雪崩 问题类型描述场景 缓存穿透查询不存在的数据,缓存和 DB 都查不到恶意攻击、错误参数 缓存击穿热点 Key 过期,大量请求同时访问秒杀商品、热门....