Open a KV store in any Deno program with one line of code.
It doesn't matter whether your code runs locally, or in 35+ data centers around the world. Deno KV works anywhere, with zero setup and zero provisioning.
Deno KV is built for JavaScript and TypeScript. Store any JavaScript value, from strings to objects, without having to worry about serialization.
The intuitive promise-based API makes storing, retrieving, and deleting data a breeze.
const kv = await Deno.openKv();
const key = ["users", crypto.randomUUID()];
const value = { name: "Alice" };
await kv.set(key, value);
const result = await kv.get(key);
result.value; // { name: "Alice" }
Go from a side project to an enterprise platform with zero config, zero provisioning, zero orchestration. We'll handle it.
Deno KV is built on FoundationDB, capable of handling millions of operations per second. You know what else is built on FoundationDB? iCloud, Snowflake, and more.
Deno KV writes data using ACID transactions, so you never have to worry about partial writes or inconsistent data. Even when you are mutating multiple keys at once.
Data is instantly durable once a transaction is committed, so you can be sure that your data is safe at all times.
const kv = await Deno.openKv();
const change = 10;
const bob = await kv.get(["balance", "bob"]);
const liz = await kv.get(["balance", "liz"]);
if (bob.value < change) {
throw "not enough balance";
}
const success = await kv.atomic()
.check(bob, liz) // balances did not change
.set(["balance", "bob"], bob.value - change)
.set(["balance", "liz"], liz.value + change)
.commit();
Find the right balance between latency and consistency for your application with our customizable consistency levels. Deno KV can adapt to your unique needs, so you can focus on your users.
await kv.get(key, { consistency: "eventual" });
Read with eventual consistency from the nearest region. Reads are fast, but may return stale data.
await kv.get(key, { consistency: "strong" });
Read with strong consistency from the primary region. Reads are slower, but always return the latest data.
You can watch for changes to given keys in your database, which makes building real-time applications like newsfeeds, notifications, analytics and more easier than before.
const db = await Deno.openKv();
for await (const entries of db.watch([["foo"]])) {
entries[0].key; // ["foo"]
entries[0].value; // "bar"
entries[0].versionstamp; // "0100001dc33546270000"
}
Use Deno KV how you like with the standalone open source binary and ability to remotely connect to any Deno KV instance. There's even an official npm module so you can access it in Node.
import { openKv } from "@deno/kv";
Use Deno KV in Node with our official @deno/kv npm module.
const kv = await openKv(<KV Connect URL>);
Connect remotely to any KV instance.
Developing locally and deploying to production is simple with KV on Deno CLI. Backed by SQLite, KV on Deno CLI ensures consistency and durability during local development.
Don't want to use Deno Deploy? Deno KV works on any VPS, so you can deploy to your favorite cloud hosting service.
Docs- GitHub authentication
- Saved user state
- Real-time sync using BroadcastChannel
- Persistent canvas state
- Multi-user collaboration
- Real-time sync using BroadcastChannel
- Zod schema validation
- Built using Fresh
- Real-time collaboration using BroadcastChannel
KV Pricing
Get started for free with everything you need to launch your project in just a few clicks