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键值存储API很有用,很高兴将其集成到语言中,并且不需要配置。
我唯一对此的抱怨是,它对于高级查询来说太简单了,如果您需要的话,可能不会是负面的。
如果您需要更高级的查询,我会推荐mysql或mongodb。
其他资源
https://deno.land/manual/runtime/kv