BitzOrcas 当前使用 IMemoryCache 满足单实例内存缓存需求。基于 FusionCache 的多层缓存策略已列入路线图,用于生产环境多实例部署。
当前用法
幂等去重
IdempotencyPipelineBehavior 使用 IMemoryCache 对携带 Idempotency-Key 头的请求进行去重:
// 带有 Idempotency-Key: "req-abc123" 的请求// → 首次调用:执行处理器,缓存结果// → 重复调用:立即返回缓存结果在 ApiPipelineRegistration 中注册:
services.AddMemoryCache(); // 为 IdempotencyPipelineBehavior 提供支持限流计数器
ASP.NET Core 内置的 RateLimiter 使用内存分区计数器。策略详情参见 Web 构建块。
路线图:FusionCache
计划使用 FusionCache 的多层缓存:
┌───────────────────────────────────────┐│ 应用层 ││ 缓存 Get/Set │└───────────────┬───────────────────────┘ ▼┌───────────────────────────────────────┐│ FusionCache ││ ┌─────────────┐ ┌───────────────┐ ││ │ L1 内存 │ │ L2 Redis/ │ ││ │ (本地) │→ │ 分布式 │ ││ └─────────────┘ └───────────────┘ ││ + 防击穿保护 ││ + 失败安全回退 ││ + OpenTelemetry 遥测 │└───────────────────────────────────────┘计划特性
- L1/L2 缓存层 — 进程内内存 + 分布式(Redis/Valkey)
- 防击穿保护 — 防止缓存雪崩
- 失败安全 — L2 不可用时优雅回退
- OTel 遥测 — 缓存命中/未命中指标
- 缓存键版本控制 — schema 变更时自动失效
配置(未来)
{ "FusionCache": { "L1Enabled": true, "L2Enabled": true, "L2ConnectionString": "localhost:6379", "DefaultDuration": "00:05:00", "MaximumDuration": "01:00:00" }}