| 空值缓存 | 对不存在的结果缓存短 TTL,注意与新增数据的一致性 |
|---|---|
| 布隆过滤器 | 判断“可能存在”,明显不存在直接拒绝 |
| 校验 | ID 格式与范围校验,拦截明显非法请求 |
防护流程(伪代码)
防护流程(伪代码)
v = cache.get(key)
if v == NULL_MARK: return None # 空值缓存命中,直接返回
if v is None:
v = db.query(key)
if v is None: cache.set(key, NULL_MARK, ttl=60s)
else: cache.set(key, v, ttl=10m)
return v
# 新增记录:写库成功后删除对应空值标记
# 前置校验:ID 格式与范围检查放在查缓存之前空值缓存要与数据创建流程联动:新建记录后主动清理对应空值标记,避免短暂不可见。