金鑰過期時間 (金鑰的 TTL)
Deno KV 目前處於測試階段
Deno KV 和相關的雲端原始 API(例如佇列和 cron)目前為實驗性質,且可能會變更。雖然我們會盡力確保資料耐用性,但資料遺失仍有可能發生,特別是在 Deno 更新時。
使用 KV 的 Deno 程式在啟動程式時需要 --unstable
旗標,如下所示
deno run -A --unstable my_kv_code.ts
自 1.36.2 版起,Deno KV 支援金鑰過期,讓開發人員可以控制 KV 資料庫中金鑰的生存時間 (TTL)。這允許將過期時間戳記與金鑰關聯,在過期時間戳記之後,金鑰將自動從資料庫中刪除
const kv = await Deno.openKv();
// `expireIn` is the number of milliseconds after which the key will expire.
function addSession(session: Session, expireIn: number) {
await kv.set(["sessions", session.id], session, { expireIn });
}
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();
}
注意事項
過期時間戳記指定金鑰可以從資料庫中刪除的最早時間。實作允許在指定時間戳記之後的任何時間過期金鑰,但不能在指定時間戳記之前過期金鑰。如果您需要嚴格執行過期時間(例如出於安全目的),請也將其新增為您的值欄位,並在從資料庫中擷取值之後進行檢查。