Skip to content
阅读进度

如何理解缓存命中、失效与击穿? ​

返回 数据与搜索 目录

标准回答 ​

搜索缓存键通常需要包含规范化查询、过滤、排序、分页、数据版本和影响结果的权限范围。遗漏租户或权限会产生越权,遗漏版本会返回过期结果。个性化结果不能仅按关键词共享。

Cache-aside 的常见路径是先查缓存,未命中读后端并回填;写入后失效策略需要考虑并发旧读回填。对一致性要求更高的内容,可以使用版本化键或校验版本。TTL 是上界控制工具,不能保证每次都读到最新状态。

热点失效会造成击穿,可用同键请求合并、短期锁或受控旧值服务;空结果缓存需要短 TTL 和权限隔离;大量同时过期可以适当打散。所有策略都应有等待上限和失败回退,不能让缓存锁变成新的无限队列。

追问与回答 ​

缓存已经失效为什么又出现旧数据 ​

先读到旧数据库结果的请求可能在失效后回填。需要版本校验、写读协议或明确可接受的短暂不一致范围。

命中率 95% 是否说明架构很好 ​

还要看未命中 P95、缓存成本、数据新鲜度和命中是否正确。高命中可能只是访问集中,并不能证明后端扩展能力。

易混淆点 ​

  • 跨用户复用未包含权限条件的缓存键。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。