SuperAPI AI 工具集

caching-strategies

设计与创作

查看项目

更新于 10-15 20:29

技能介绍

本技能用于设计 Web 应用的多级缓存架构,重点解决缓存失效与数据陈旧问题,而非单纯追求命中率。

用途:选择适合场景的缓存模式;设计不同数据新鲜度要求的 TTL;实现 Redis 缓存模式(有序集合、pub/sub 失效、Lua 脚本);配置 Cache-Control、ETag 与 CDN 行为;防止缓存雪崩;冷启动缓存预热;多级缓存设计(内存 L1、Redis L2、CDN L3)。不适用于数据库内部查询计划缓存、纯函数记忆化、CPU 硬件缓存调优和会话存储。

主要能力:

  1. 模式选择:cache-aside(读未命中时懒加载,可接受短期陈旧)、write-through(同步写缓存与数据库,适合读多写少)、write-behind(异步回写,写快但有崩溃丢数据风险)。写路径推荐删除缓存而非更新,避免竞态。
  2. 多级架构:L1 进程内缓存(约 0ms,每实例独立)、L2 Redis/Memcached(1-5ms,跨实例共享)、L3 CDN/边缘(10-100ms,全球共享);数据先在一处变更,失效从 DB→Redis→CDN 向外传播,不跳级。
  3. TTL 设计:TTL 是陈旧预算而非失效策略;按数据易变性设定,并加随机抖动避免同时过期。
  4. 雪崩防护:概率提前过期(XFetch)与未命中加互斥锁(NX+PX),锁需 Lua 原子版本防止误释放。
  5. Redis 与 HTTP 缓存参考:redis-patterns.md 含排行榜、Lua 原子操作、pub/sub 失效、SCAN 删键、管道批处理;http-caching.md 含 Cache-Control、ETag、Vary、CDN 与服务工作者策略。

使用方式:按参考资料中的流程图判断由谁写缓存、何时填充、是否可接受短暂陈旧,再选用对应模式;代码中所有缓存写入应设置过期时间,写路径需配套显式失效或 pub/sub 通知。本页面未提供安装命令或具体调用步骤,相关用法暂未提供。

限制:仅面向 Web 应用缓存设计,不覆盖数据库查询缓存、会话存储等场景;示例代码为示意,实际部署需结合团队技术栈验证;文中未提供价格、平台支持或性能保证等信息。