Redis 缓存穿透、击穿、雪崩 使用 Redis 缓存时遇到的三个经典问题整理笔记。缓存穿透现象查一个不存在的 keyRedis 没有MySQL 也没有每次请求都打到数据库。解决方法缓存空对象查不到时也缓存一个 null设置短 TTL布隆过滤器请求先过布隆过滤器不存在直接返回// 缓存空对象示例 Object value redis.get(key); if (value null) { value db.query(key); if (value null) { redis.set(key, , 60); // 空值缓存 60 秒 } }缓存击穿现象一个热点 key 刚好过期大量并发请求同时打到数据库。解决方法互斥锁重建缓存时只允许一个线程查数据库逻辑过期key 不过期内部存过期时间发现过期后异步更新缓存雪崩现象大量 key 同时过期或者 Redis 挂了所有请求都打到数据库。解决方法TTL 加随机值避免同时过期Redis 高可用主从 哨兵/集群本地缓存兜底Caffeine这三个问题面试经常问重点是能说清楚区别和对应的解决方案。