Cloudflare KV 的限额和计费是怎么算的?
我在本地往 KV 里写了一个超过 25 MiB 的 value,返回的是 413;写一个超过 512 字节的 key,返回的是 414。这些限制很容易撞到,但同 key 每秒 1 次写入的限制,我在本地怎么写都撞不到。
KV 的硬限制是:key 最长 512 字节,value 最大 25 MiB,metadata 最大 1024 字节,每次 Worker 调用最多 1,000 次 KV 操作;计费上,批量读按读取的 key 数算,读不存在的 key 也要钱。
这些数字决定了你能往 KV 里放什么、一次请求能碰它几次。下面按你上线前会问的顺序过一遍:大小限制、操作次数、免费额度,以及本地测试能信到哪一步。KV 本身为什么不能当数据库,见 Cloudflare KV 能当数据库用吗?。
key、value 和 metadata 各有多大上限?
官方文档给的数字是:key 最长 512 字节,value 最大 25 MiB,metadata 序列化后最大 1024 字节。
超限的响应我在本地 wrangler dev 上都看到了:
- value 超过 25 MiB,返回 413;
- key 超过 512 字节,返回 414;
- metadata 超过 1024 字节,返回 413;
- 空 key 直接报错。
TTL 参数也有下限:expirationTtl 小于 60 会被拒绝,cacheTtl 小于 30 也会被拒绝,两者都是 400,错误信息会提示最小值。
读大 value 时,用 stream 或 arrayBuffer 读取。单个值上限是 25 MiB,单次响应也受这个限制。
一次请求里最多能调用多少次 KV?
每次 Worker 调用最多 1,000 次 KV 操作。批量读在这个上限里只算 1 次,但计费不一样,见下一节。
一次读多个 key 最多 100 个,我在本地试过,超过 100 个返回 400。批量读怎么写、list 怎么翻页,另有一篇 Cloudflare KV 怎么批量读取和列出 key?。
免费和付费计划怎么计费?
官方文档的说法:
- 免费计划每天 100,000 次读、1,000 次写,超出后该类操作直接失败。
- 付费计划每月含一定额度,超出按量计费。读、写、删、list 的单价各不相同。
- 批量读在调用次数上算 1 次,但计费按读取的 key 数。
- 读取不存在的 key 同样计费。
最后一条值得留意:用 KV 做存在性检查,查的全是不存在的 key,账单照样走。具体单价我没有写在这里,请直接查官方定价页。
同一个 key 写得太快会怎样?
同一个 key 每秒最多写 1 次,超出返回 429。这条限制决定了 KV 不适合高频更新的 key,计数器之类的场景应该看 Durable Objects。
我在本地连续 5 次、并发 5 次写同一个 key,全部成功,没有 429。所以本地测试通过,不能说明上线后不会被限流。如果你的设计里有热点 key 回源后集中写缓存,要把写失败当成正常情况处理,做法见 怎么用 Cloudflare KV 做读穿缓存?。
批量写入怎么做?
Worker 绑定里只有单 key 的 put。批量写入要走 Wrangler 的 kv bulk 命令或 REST API。
限额、价格与行为以 2026-10 官方文档为准,会变化。大小上限、操作次数上限、批量写入方式、计费规则(含读不存在的 key 照样计费)和同 key 每秒 1 次写入的限制,都是官方文档的说法,我没有在线上验证。413、414、400 这些超限响应,以及批量读超过 100 个 key 返回 400,我在本地 wrangler dev 上跑过;本地没有复现同 key 的 429,也看不到真实计费。