跳至主要內容

金鑰過期時間 (金鑰的 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();
}

注意事項

過期時間戳記指定金鑰可以從資料庫中刪除的最早時間。實作允許在指定時間戳記之後的任何時間過期金鑰,但不能在指定時間戳記之前過期金鑰。如果您需要嚴格執行過期時間(例如出於安全目的),請也將其新增為您的值欄位,並在從資料庫中擷取值之後進行檢查。