将DENO KV与Deno Deploy Guide一起使用
#javascript #网络开发人员 #教程 #deno

DENO KV是一种新的键值存储系统,该系统以DENO运行时的1.32版本发布。
它允许持续数据存储,这意味着日期存储在系统重新启动之间的磁盘上。

在写作时,Deno KV仍在实验中,并且API可能会发生变化。
因此,建议保留数据备份,就像始终提供的备份。
Deno KV也被设计为非常快速和优化。

目录

DENO KV概述

由于Deno KV是实验性的,只能通过使用 - 不稳定 flag。

可以通过deno.kv api访问deno kv。 API很简单,并赋予以下主要方法:

  • const kv = deno.openkv() - 返回deno kv对象的新实例。
  • kv.set(key,val) - 允许您在指定的键设置值。
  • kv.get(键) - 允许您获得与指定键关联的值。
  • kv.delete(key) - 从数据库中删除指定的键。
  • kv.list(selector) - 接收匹配选择器的项目列表。
  • kv.atomic() - 允许您一口气将多种方法保存在数据存储中。
  • kv.close() - 关闭数据库连接,这将阻止任何进一步的操作发生并取消当前运行的操作。

还有其他更专业的API方法,这些方法超出了本文的范围。
请参阅Deno KV docs以获取更多信息。

密钥值商店中的键是JavaScript类型,这意味着它们可以是字符串,数字或布尔值。
这些值可以是数组,对象或其他JavaScript原始类型。

简单的KV应用程序的示例

这是一个简单的示例,显示了如何使用API​​。
在此示例中,我们将几个用户添加到数据库中。

const kv = await Deno.openKv(); // Create a new instance of the Deno KV API.

kv.set(["users", "jim"], "Jim"); // Sets the key "jim" with the prefix "users"
kv.set(["users", "peter"], "Peter"); // Sets the key "peter" with the prefix "users"

// Receives a list of all keys with "prefix" users.
for await (const res of kv.list({prefix: ["users"]})) {
  console.log(res.key);
}

最初让我对kv.set()方法感到困惑的是,它不接受字符串作为其参数,
而是期望数组作为参数。

起初这似乎很奇怪,它允许一种强大的方法来分类和查询数据。
例如,当使用 kv.list() 时,我们可以使用 prefix range选择器查询数据。

更高级的示例

上面的简单示例显示了前缀选择器,但它也支持 range 选择器,该范围以类似的方式使用:

// Receives a list of all items with "prefix" users, and that has a key of j up to p.
kv.list({start: ["users", "j"], end: ["users", "p"]});

原子操作

原子能操作是将多种方法结合在一起的强大方法。这可以通过让系统组合操作来提高性能。您在原子操作上调用方法的顺序保证以相同的顺序执行。

deno.Atopoperation对象还包含许多独特而有用的方法:

  • check()
  • commit()
  • delete()
  • enqueue()
  • max()
  • min()
  • mutate()
  • set()
  • sum()

您可以在Deno API Docs中阅读更多这些原子方法。

这是一个简单的示例,显示了原子的使用:

// Sets a certain key to a value, and then deletes key peter from users.
kv.atomic().set(key, value).delete(["users", "peter"]).commit();

访问DENO部署KV Beta

这仅适用于想要在DeNo Deploy上运行DENO KV的人

在撰写时,Deno Deploy KV当前仅作为封闭的Beta。

您可以通过访问此链接加入候补名单:https://deno.com/kv

访问权限后,您将在您的DENO部署项目dash中看到一个名为“ KV(beta)”的新选项卡。

Deno Deploy dash

结论

DENO键值存储API很有用,很高兴将其集成到语言中,并且不需要配置。
我唯一对此的抱怨是,它对于高级查询来说太简单了,如果您需要的话,可能不会是负面的。
如果您需要更高级的查询,我会推荐mysql或mongodb。

其他资源

https://deno.land/manual/runtime/kv

https://deno.com/deploy/docs/kv

https://deno.com/kv

https://deno.land/api@v1.34.3?unstable&s=Deno.Kv