Skip to content
返回云服务

Cloudflare KV 键值存储

全球分布式键值存储,最终一致,25MB 值,边缘读取 <10ms。

Cloudflare入门

为什么

KV 边缘读取 1-10ms,每天 10 万次免费。适合配置、功能开关、会话 token 和 A/B 测试变体。写一次读多次的工作负载几乎零成本。

何时使用

用于配置、功能开关、会话、限流计数器和缓存 API 响应。避免需强一致、频繁写入或关系查询的数据。

如何做

1. 创建命名空间 — wrangler kv:namespace create CONFIG(返回 id) 2. 绑定 — [[kv_namespaces]] binding="CONFIG" id="..." 3. 写 — env.CONFIG.put("key", "value", { expirationTtl: 3600 }) 4. 读 — const v = await env.CONFIG.get("key") // string | null 5. 列表 — env.CONFIG.list({ prefix: "user:" }) 按前缀 6. 批量 — wrangler kv:key put --namespace-id=... --path=./data.json 7. TTL — expirationTtl(秒)或 expirationDate(epoch),自动删除

示例

// 通过 KV 实现功能开关,边缘读取 export default { async fetch(request: Request, env: Env): Promise<Response> { const flags = JSON.parse(await env.CONFIG.get("feature_flags") || "{}"); if (flags.newCheckout && request.url.includes("/checkout")) { return env.NEW_CHECKOUT.fetch(request); } return env.LEGACY_CHECKOUT.fetch(request); }, }; // 带 TTL 的会话存储 async function setSession(env: Env, token: string, userId: string) { await env.SESSIONS.put(`sess:${token}`, userId, { expirationTtl: 86400 }); } async function getUser(env: Env, token: string) { return env.SESSIONS.get(`sess:${token}`); }

常见问题

  • ⚠最终一致约 60 秒 — 写全球传播慢,可能读到旧值
  • ⚠25MB 值限制 — 大 JSON 必须分块或移到 R2
  • ⚠大命名空间 list() 慢 — 每次返回 1000 键,仔细分页

最佳实践

  • ✓可缓存数据用 Cache API — 免费、更快、尊重 HTTP 缓存语义
  • ✓按租户/区域前缀键 — list({prefix}) 实现高效范围查询
  • ✓存 JSON 而非原始值 — 无需读-改-写竞态即可部分更新

常见问题解答

什么是Cloudflare KV 键值存储?它解决什么问题?

全球分布式键值存储,最终一致,25MB 值,边缘读取 <10ms。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手Cloudflare KV 键值存储?

两步即可跑通:① 创建命名空间 — wrangler kv:namespace create CONFIG(返回 id);② 绑定 — [[kv_namespaces]] binding="CONFIG" id="..."。建议先用免费套餐验证流程,再接入生产环境。

Cloudflare KV 键值存储 最容易踩的坑是什么?

最高频的问题是:最终一致约 60 秒 — 写全球传播慢,可能读到旧值。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

Cloudflare KV 键值存储 的最佳实践有哪些?

Cloudflare KV 键值存储 的最佳实践包括:可缓存数据用 Cache API — 免费、更快、尊重 HTTP 缓存语义;按租户/区域前缀键 — list({prefix}) 实现高效范围查询;存 JSON 而非原始值 — 无需读-改-写竞态即可部分更新。其中首条「可缓存数据用 Cache API — 免费、更快、尊重 HTTP 缓存语义」应作为团队默认规范写入 IaC 模板。

Cloudflare KV 键值存储 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。Cloudflare KV 键值存储 多数提供免费套餐,先在免费额度内验证再放量。