用途:为高流量 API 设计并实现多级缓存策略,覆盖数据访问模式选择、TTL 配置、防止缓存击穿,以及生产环境可用的缓存失效机制。
主要能力:
- 分析缓存机会:通过埋点记录响应时间与调用频率,识别“高频低变更”数据作为缓存候选。示例中 GET /api/products 为每分钟 12000 次、每 30 分钟变更,建议缓存 TTL 5 分钟;POST /api/orders 始终唯一,不缓存。
- 实现 cache-aside 模式:应用先查缓存,未命中回退数据库,再回填缓存(示例使用 ioredis 与 getCached 函数)。
- 防止缓存击穿:热门键过期时用分布式锁(redis.set 配合 EX、NX)让单个进程刷新,其余请求等待重试。
- 缓存失效:使用 scan 按模式批量删除键,在数据更新时清除相关缓存及列表缓存。
使用方式:在项目中加入 Redis 客户端与缓存封装,将路由处理器包裹 cache-aside 逻辑;更新数据时调用失效函数;可通过响应头输出命中/未命中指标。示例涉及 src/cache/redis-client.ts、src/cache/invalidation.ts、src/cache/memory-lru.ts、src/cache/tiered-cache.ts 等文件结构。
适用场景:高并发 API 响应缓存、多级缓存(内存 LRU + Redis + 数据库)、商品目录、用户资料等低频变更数据。
限制与注意事项:始终设置 TTL,避免无 TTL 缓存;使用 key 命名空间并版本化;监控命中率,低于 80% 说明 TTL 过短或数据变更过快;为 Redis 宕机做优雅降级;共享缓存中避免未隔离的用户数据。资料未提供具体安装命令、依赖版本、支持的平台范围及收费信息。