fix: 获取已存在的 key,避免重复写入刷新过期时间

master^2
layhuts 2026-05-09 23:27:25 +08:00
parent 43717807a4
commit 1299acd8f9
1 changed files with 12 additions and 5 deletions

View File

@ -95,12 +95,19 @@ function createIndexedDBAdapter(
async setKeys(keys) {
try {
const newKeySet = new Set(keys.map(String));
// 先写入新数据,确保数据安全落盘
await Promise.all(
keys.map((key) => manager.setItem(String(key), key, opts.ttl)),
);
// 再清理不在新集合中的旧 key
// 获取已存在的 key避免重复写入刷新过期时间
const existingKeys = await manager.keys();
const existingKeySet = new Set(existingKeys);
// 只写入新增的 key不覆盖已有记录的过期时间
const toAdd = keys.filter((key) => !existingKeySet.has(String(key)));
if (toAdd.length > 0) {
await Promise.all(
toAdd.map((key) => manager.setItem(String(key), key, opts.ttl)),
);
}
// 清理不在新集合中的旧 key
const toRemove = existingKeys.filter((k) => !newKeySet.has(k));
if (toRemove.length > 0) {
await Promise.all(toRemove.map((k) => manager.removeItem(k)));