缓存是高并发系统的性能基石,但设计不当会引发三类典型故障,需针对性治理。
一、三类问题对比
| 问题 | 成因 | 后果 | 治理手段 |
|---|---|---|---|
| 缓存穿透 | 查询不存在的数据 | 请求直达数据库 | 布隆过滤器、空值缓存 |
| 缓存击穿 | 热点 Key 过期瞬间 | 大量请求打到数据库 | 互斥锁重建、逻辑过期 |
| 缓存雪崩 | 大量 Key 同时过期 | 数据库瞬时过载 | 过期时间加随机抖动、多级缓存 |
二、布隆过滤器示例
python
from redis import Redis
from redisbloom.client import Client
rb = Client(host='localhost')
rb.bfCreate('users', 0.01, 1000000)
rb.bfAdd('users', 'user:123')
if rb.bfExists('users', 'user:456'):
# 可能存在,继续查缓存与数据库
pass布隆过滤器以极小内存代价拦截不存在的 Key,但存在误判率,需结合空值缓存兜底。