/** * 简单内存 TTL 缓存 * * 设计目标: * - 进程内单例(模块级 Map),零依赖 * - 支持 TTL(默认按 key 自定义) * - 同 key 命中即读,未命中调 loader 加载并写入 * - 单飞 (singleflight):同 key 并发请求只触发一次 loader,其余 await 同一 Promise * * 为什么需要: * 行情类数据 A 股每个交易日实时变化,但 1~3 秒内重复请求是浪费带宽; * K 线/财务类日级数据在交易日内不会变,几分钟缓存即可。 * 内存缓存就够了 —— 跨进程缓存(redis 等)复杂且股票数据对一致性敏感。 */ /** * TTL 缓存 + singleflight * * @example * const getQuote = memoize(async (code: string) => fetchQuote(code), 1500) * getQuote('600519') */ export declare function memoize(loader: (key: K) => Promise, ttlMs: number): (key: K) => Promise; /** 清空全部缓存(测试用) */ export declare function clearCache(): void; /** 预定义的 TTL(毫秒) */ export declare const CacheTTL: { /** 实时行情(秒级) */ readonly quote: 1500; /** 分时图(分钟级) */ readonly minute: 30000; /** K 线(日级,交易日内变化) */ readonly kline: number; /** 股票/板块/指数列表(每日变动) */ readonly list: number; /** 财务数据(季报/年报,变化不频繁) */ readonly financial: number; /** 公司基本信息 */ readonly profile: number; /** 公告/新闻 */ readonly news: number; /** 资金流 */ readonly fundflow: number; /** 搜索建议(秒级) */ readonly search: 60000; }; //# sourceMappingURL=cache.d.ts.map