Skip to content

Cloudflare 推出 Workers KV Instant:基于 Quicksilver 实现即时全局读取 ​

译注:本文翻译自 Cloudflare 官方博客,原文发布于 2026 年 10 月 1 日,作者 Rob Sutter。原文链接:https://blog.cloudflare.com/workers-kv-instant/

Cloudflare 今日推出 Workers KV Instant,这是 Workers KV 的一种新模式,可将变更推送到全球各地并即时生效,且没有冷读取惩罚。

Workers KV 自 2018 年生日周发布以来,一直是开发者平台上最受欢迎的服务之一。它非常适合快速访问那些写入不频繁但读取频繁的数据,例如静态资源和用户配置。Cloudflare 自身也在许多产品中使用它。此外,Cloudflare 还有另一个键值存储 Quicksilver,自 2020 年推出以来已多次撰文介绍。Quicksilver 专为极快的全局复制和低延迟访问而设计,几乎每一个发往 Cloudflare 的请求都会在 Quicksilver 中查找至少一个键。多年来用户一直询问能否使用 Quicksilver,但 Cloudflare 从未将其开放给客户。今天,通过 Workers KV Instant,这一局面得以改变。

KV Instant 模式提供与 Workers KV 相同的 API,但底层由 Quicksilver 驱动。KV Instant 的 p99 读取速度快 100 倍,更新即时生效,无需等待 TTL 过期。它并不适用于所有类型的数据,但对于不常更新的应用配置数据——也正是 Cloudflare 自己使用 Quicksilver 的场景——KV Instant 表现出色。

读取速度比 Workers KV 快 100 倍 ​

KV Instant 的读取延迟比经典模式快 100 倍以上,即使在响应时间的第 99 百分位(p99)也能在 2 毫秒内完成读取,第 95 百分位(p95)则以微秒计。写入推送到边缘的速度快 20 倍以上,99% 的写入在约 250 毫秒内完成复制。这些高性能特性使 KV Instant 非常适合在应用热路径中读取数据,尤其是那些写入后应几乎即时在全球可用的标志位和设置。

模式p99 读取(缓存)p99 读取(全部)写入复制中位数p95 写入复制p99 写入复制
Instant不适用1.62 ms107 ms (1)181 ms (1)256 ms (1)
Classic160 ms287 ms< 1 s (2, 3)< 1 s (2, 3)4.38 s (2)

表注:

  1. 复制到所有边缘位置(截至发布时超过 300 个)的时间
  2. 复制到所有必需存储后端的时间
  3. 经典模式的复制延迟没有亚秒级精度

KV Instant 由 Quicksilver v2 驱动,这是 Cloudflare 内部开发的键值存储,旨在实现行星规模的快速全局复制和低延迟访问。

与 Workers KV 相同的简洁 API ​

KV Instant 使用开发者熟悉的 Workers KV API。例如,假设你正在进行一次大型产品发布,需要在上午 10:13 产品在台上主题演讲中亮相时切换首页内容。你需要一个可以读取的键,引入近乎零的延迟,无论规模如何都能在每个请求中读取,并且在你修改时即时更新。

javascript
async fetch(request, env, ctx) {
  // 在每个请求中从 KV Instant 读取发布标志
  const launched = (await env.APP_CONFIG.get("new-product-launched")) === "true";

  if (launched) {
    // 提供发布版首页
    return new Response({ ... });
  }

  return new Response({ ... });
}

大多数绑定操作与 Workers KV 经典版兼容。使用 KV Instant 时有三个关键区别:

  • 创建 KV 命名空间时必须指定 KV Instant 模式(传入 "mode": "instant" 属性)
  • 不支持元数据,因此 getWithMetadata 调用始终返回 null,put 也不支持传递元数据
  • KV Instant 中的 list 操作返回命名空间中所有匹配的键,没有分页

更多 API 示例请参阅 Workers KV 文档。

定价:读取成本比经典 Workers KV 低 60% ​

KV Instant 的定价适合其擅长的读取密集型、小数据量工作负载。由于数据会传播到每个 Cloudflare 位置,使用 Cloudflare 多年来学习如何在大规模热路径上运营的同一 Quicksilver 键值存储,因此读取定价比 Workers KV 低 60%,也远低于其他全局配置产品。相反,存储和 A 类操作则比 Workers KV 贵得多。如果需要存储大量数据或频繁更新,Workers KV 仍然是很好的选择。两种模式针对的是截然不同的数据类型和访问模式。

KV Instant 命名空间按三个维度计费:数据存储、A 类操作和 B 类操作。

B 类操作(读取)A 类操作(put、delete、list)存储
Workers KV Instant每百万次 $0.20每次操作 $0.10每 MB 每月 $100
Workers KV每百万次 $0.50每百万次 $5.00每 GB 每月 $0.50

存储:按每 MB 每月 $100 计费。每个键最大 300 字节,值的大小不限,但命名空间总大小不得超过 1 MB。KV Instant 命名空间最多可包含 10,000 个任意类型的键值对。

A 类操作:put、delete 和 list 按每次操作 $0.10 计费。写入或删除的每个键计为一次 A 类操作。每个 list 请求计为一次 A 类操作,无论响应中返回多少个键。单次 list 操作可以在单页中返回命名空间中的所有键值对。由于写入必须经过单一记录系统,KV Instant 还将写入频率限制为每个命名空间每秒一次写入。这类似于经典 Workers KV 对每个键每秒一次写入的限制,便于开发者推断应用中的更新顺序。

B 类操作:get 按每百万个请求键 $0.20 计费,比 Workers KV 默认模式便宜 60%。在单次 get 操作中请求多个键时,每个请求的键计为一次 B 类操作。例如,以下两种方式都会产生三次 B 类操作,从计费角度看是等价的。

javascript
// 通过三次单独的 get 操作请求键
// 产生三次 B 类操作
let routeAPAC = await APP_CONFIG.get("route_APAC");
let routeEUR = await APP_CONFIG.get("route_EUR");
let routeNAMER = await APP_CONFIG.get("route_NAMER");

// 在单次 get 操作中请求三个键
// 同样产生三次 B 类操作
let routes = await APP_CONFIG.get(["route_APAC", "route_EUR", "route_NAMER"]);

Workers KV Instant 目前处于私有测试阶段 ​

KV Instant 今日以私有测试形式推出。Cloudflare 期待与希望尝试的客户合作,随后更广泛地开放,并欢迎反馈。可在此处注册私有测试。

原文链接 ​

https://blog.cloudflare.com/workers-kv-instant/