@dbx-工具/缓存
带有可选工程瞄准镜的捆绑内存中的缓存节点.js 和 Bun 值 磁盘或 Keyv相容的持久性 。 前面写着别等了 并且关闭可以排出追踪到的文字.
缓存项目数据
import { closeCache, getOrSet, projectCache } from "@dbx-tools/cache/cache";
const cache = projectCache("models", { ttl: "5m" });
const models = await getOrSet(cache, "catalog", loadModels, {
returnCachedOnError: true,
});
await closeCache(cache);
projectCache 在此过程中再使用同一命名的缓存 。 打电话 closeCache
在程序关闭以冲出待定磁盘时.
在不阻塞的情况下刷新热值
设定 refreshAfterWrite 当呼叫者继续收到当前值时
而一个同步重装更新它。 持续时间取决于缓存
值 :
const enabled = await getOrSet(cache, "smart-router", probeSmartRouter, {
ttl: "2h",
refreshAfterWrite: (value) => (value ? "5m" : "30s"),
});
装填器的首个缺失块. 之后 refreshAfterWrite,下一个访问
立即返回缓存值,并启动一个连接后的背景更新.
未使用的条目不刷新,以及 ttl 仍然很难结束。 A 类
失败的背景刷新 . closeCache() 等待时间
在断开持久性之前进行活动更新 .
创建一个仅保存内存的缓存
使用 createCache 数值应保持局部到
当前进程:
import { closeCache, createCache } from "@dbx-tools/cache/cache";
const cache = createCache({ maxEntries: 250, ttl: "30s" });
await cache.set("health", { status: "ready" });
await closeCache(cache);
命令的 Keyv 兼容 levels 改为 createCache 应用程序需要时
自定义持久性。 软件包不依赖于 AppKit;
@dbx-tools/appkit 适应 AppKit 的存储合同.
软件包拥有Keyv运行时间,所以消费者不会安装或将Keyv钉入到
对齐缓存构建器.
限制
内存级别是进程本地化的,不是跨replica协调
机制。 打电话 closeCache() 在关闭时,当以后的水平必须收到时
待定写作。 使用共享的 Keyv 兼容级别或自有框架
当复制品必须读取相同的持续值时,可分配缓存.