UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

42 lines (41 loc) 1.65 kB
/** * CacheCoordinator — 跨进程缓存失效协调器 * * 利用 SQLite 内置的 `PRAGMA data_version` 检测其他进程的 DB 写入。 * 当检测到 data_version 变化时,通知所有注册的订阅者清除内存缓存。 * * 原理: * - SQLite 的 data_version 是一个连接级别的计数器 * - 当 *其他* 连接(包括其他进程)提交写事务后,当前连接的下次读操作 * 会看到递增的 data_version * - 通过定期轮询(默认 2s),实现近实时的跨进程缓存失效 * - 开销极低:一次 pragma 读取 < 0.01ms * * 典型场景: * - MCP Server 冷启动写入 33 条 Recipe → HTTP Server 的 data_version 变化 * - 用户 CLI 执行 `asd embed` → Dashboard API 的缓存自动失效 * * @module infrastructure/cache/CacheCoordinator */ import type { SqliteDatabase } from '../database/DatabaseConnection.js'; export type InvalidateHandler = () => void; export declare class CacheCoordinator { #private; constructor(db: SqliteDatabase, pollIntervalMs?: number); /** 启动轮询(仅长驻进程需要:HTTP server / MCP server) */ start(): void; /** 停止轮询 */ stop(): void; /** * 注册缓存失效回调 * * @param name 标识名(用于日志,如 'panoramaService') * @param handler 失效时调用的清除函数 * @returns 取消注册函数 */ subscribe(name: string, handler: InvalidateHandler): () => void; /** 当前订阅者数量(诊断用) */ get subscriberCount(): number; /** 手动触发一次检查(测试用) */ check(): boolean; }