Skip to content
bitzorcas
EN

Reference

缓存构建块

基于 IMemoryCache 的内存缓存 — 幂等去重、限流计数器,以及未来 FusionCache 多层缓存路线图。

Last updated

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"
}
}