跳到主要内容

Deno Deploy 上的 KV

Deno KV 目前处于测试阶段

Deno 的 KV 及其相关的云基元 API,如队列和定时任务,目前仍处于实验性阶段,可能会发生变化。尽管我们尽力确保数据持久性,但特别是在 Deno 更新时,仍然存在数据丢失的可能性。

在启动使用 KV 的 Deno 程序时,需要添加--unstable标志,如下所示:

deno run -A --unstable my_kv_code.ts

Deno Deploy 现在提供了一个名为 Deno KV 的内置无服务器键-值数据库。

此外,Deno KV 也可在 Deno 自身内部使用,其后端采用 SQLite。此功能自 Deno v1.32 起便可通过 --unstable 标志访问。了解更多关于 Deno KV 的信息。

一致性

Deno KV 默认是一个强一致性数据库。它提供了称为“外部一致性”的最严格形式的强一致性,包括:

  • 可串行性:这是事务隔离的最高级别,确保多个事务的并发执行的系统状态与事务按顺序一个接一个地执行时的系统状态相同。换句话说,可串行性事务的最终结果等同于这些事务的某个顺序执行。
  • 线性一致性:这种一致性模型确保操作(如读和写)看起来是瞬间发生的,并且实时发生。一旦写操作完成,所有后续读操作将立即返回更新后的值。线性一致性确保了操作的强实时排序,使系统更可预测且更易于理解。

同时,您可以通过在单独的读操作上设置 consistency: "eventual" 选项来放宽一致性约束。此选项允许系统从全局副本和缓存中提供读取以实现最低延迟。

以下是我们顶级区域观察到的延迟数据:

区域延迟(最终一致性)延迟(强一致性)
北弗吉尼亚(us-east4)7 毫秒7 毫秒
法兰克福(europe-west3)7 毫秒94 毫秒
荷兰(europe-west4)13 毫秒95 毫秒
加利福尼亚(us-west2)72 毫秒72 毫秒
香港(asia-east2)42 毫秒194 毫秒

分布式队列

Deno Deploy 上提供了无服务器分布式队列。详细信息请参见 Deno Deploy 上的队列

从 Deno Deploy 外部连接托管数据库

您可以从 Deno Deploy 外部连接到 Deno Deploy KV 数据库。要打开托管数据库,请将 DENO_KV_ACCESS_TOKEN 环境变量设置为 Deno Deploy 个人访问令牌,并将数据库的 URL 提供给 Deno.openKv

const kv = await Deno.openKv(
"https://api.deno.com/databases/<database-id>/connect"
);