跳到主要内容

键到期

Deno KV 目前处于测试阶段

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

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

deno run -A --unstable my_kv_code.ts

自版本 1.36.2 以来,Deno KV 支持键到期。这允许将到期时间戳与键关联,之后键将自动从数据库中删除:

const kv = await Deno.openKv();

// `expireIn` 是键到期的毫秒数。
function addSession(session: Session, expireIn: number) {
await kv.set(["sessions", session.id], session, { expireIn });
}

Key 到期在 Deno CLI 和 Deno Deploy 上都受支持。

多个键的原子到期

如果多个键在相同的原子操作中设置,并具有相同的 expireIn 值,则这些键的到期将是原子的。例如:

const kv = await Deno.openKv();

function addUnverifiedUser(
user: User,
verificationToken: string,
expireIn: number
) {
await kv
.atomic()
.set(["users", user.id], user, { expireIn })
.set(["verificationTokens", verificationToken], user.id, { expireIn })
.commit();
}

注意事项

到期时间戳指定了键可以从数据库中删除的最早时间。实现允许在指定时间戳之后的任何时间到期 Key,但不允许在之前到期。如果您需要严格执行到期时间(例如出于安全目的),请还将其添加为从数据库检索值后的字段并进行检查。