Cloudflare D1、KV、R2 存储产品基础使用与收费额度
Cloudflare 的存储产品不能混着用。D1、KV、R2 看起来都能“存东西”,但适合的场景完全不同。
D1 是 SQL 数据库,KV 是键值存储,R2 是对象存储。选错产品,后面会很别扭。
说明:本文额度按 2026-06-07 官方文档整理,后续可能变化。
一、怎么选择
需要 SQL 查询、表结构、筛选、排序、分页,用 D1。
需要按 key 快速读取配置、缓存、开关,用 KV。
需要存图片、视频、压缩包、附件、备份,用 R2。
简单判断:
1 | 用户表、订单表、评论表 -> D1 |
二、D1 基础使用
创建数据库:
1 | wrangler d1 create my-db |
创建表:
1 | create table posts ( |
执行迁移:
1 | wrangler d1 migrations create my-db init |
Worker 里查询:
1 | const rows = await env.DB |
D1 适合轻量关系型数据,但不要把它当成无限扩展的传统大型数据库。
三、D1 免费额度与收费
Free 计划常见额度:
- 每天 5,000,000 行读取
- 每天 100,000 行写入
- 5 GB 存储
付费计量通常关注:
- 每月包含前 25,000,000,000 行读取,超出后 $0.001/百万行
- 每月包含前 50,000,000 行写入,超出后 $1.00/百万行
- 存储前 5 GB 包含,超出后 $0.75/GB-month
如果你的服务是后台管理、博客评论、小型 API,D1 的免费额度通常能撑很久。如果是高频写入和复杂查询,就要提前估算行读写量。
四、KV 基础使用
创建命名空间:
1 | wrangler kv namespace create CONFIG |
配置 binding:
1 | [[kv_namespaces]] |
Worker 里读取:
1 | const value = await env.CONFIG.get("site:title"); |
写入:
1 | await env.CONFIG.put("site:title", "My Blog"); |
KV 是最终一致性存储,适合读多写少,不适合强一致计数器。
五、KV 免费额度与收费
Free 计划常见额度:
- 每天 100,000 次读取
- 每天 1,000 次写入
- 每天 1,000 次删除
- 每天 1,000 次列表操作
- 1 GB 存储
付费计量通常关注:
- 读取每月包含 10,000,000 次,超出后 $0.50/百万次
- 写入每月包含 1,000,000 次,超出后 $5.00/百万次
- 删除每月包含 1,000,000 次,超出后 $5.00/百万次
- 列表每月包含 1,000,000 次,超出后 $5.00/百万次
- 存储包含 1 GB,超出后 $0.50/GB-month
KV 的关键是控制写入频率。如果数据经常变化,D1 或 Durable Objects 可能更合适。
六、R2 基础使用
创建 bucket:
1 | wrangler r2 bucket create my-bucket |
配置 binding:
1 | [[r2_buckets]] |
上传对象:
1 | await env.BUCKET.put("hello.txt", "hello r2"); |
读取对象:
1 | const object = await env.BUCKET.get("hello.txt"); |
R2 也兼容 S3 API,适合从原有 S3 工具迁移。
七、R2 免费额度与收费
R2 免费额度常见包括:
- 10 GB/月存储
- 每月 1,000,000 次 Class A 操作
- 每月 10,000,000 次 Class B 操作
收费主要看:
- Standard storage:$0.015/GB-month
- Class A 操作:$4.50/百万次
- Class B 操作:$0.36/百万次
R2 的一个重要特点是 Cloudflare 不收 R2 出口流量费。对图片、附件、下载类业务,这是很有吸引力的点。
八、实践建议
不要纠结哪个产品“最好”,先看数据形态。
需要表和查询,用 D1。需要按 key 读配置和缓存,用 KV。需要文件和对象,用 R2。
如果一个项目要做完整小型后端,常见组合是:Workers 提供 API,D1 存业务数据,KV 存缓存和配置,R2 存文件。
参考资料
- D1 Pricing: https://developers.cloudflare.com/d1/platform/pricing/
- KV Pricing: https://developers.cloudflare.com/kv/platform/pricing/
- R2 Pricing: https://developers.cloudflare.com/r2/pricing/
- D1 Docs: https://developers.cloudflare.com/d1/
- KV Docs: https://developers.cloudflare.com/kv/
- R2 Docs: https://developers.cloudflare.com/r2/