import { LRUCache } from "lru-cache"; let maxKeys = 10000; const cache = new LRUCache({ max: maxKeys, ttl: 4 * 24 * 60 * 60 * 1000, allowStale: false, updateAgeOnGet: false, updateAgeOnHas: false, }); function scaleCache() { const mem = process.memoryUsage(); const freeHeap = mem.heapTotal - mem.heapUsed; const ratio = freeHeap / mem.heapTotal; const newMax = ratio > 0.5 ? 20000 : ratio < 0.2 ? 5000 : 10000; if (newMax !== maxKeys) { maxKeys = newMax; cache.max = maxKeys; console.log(`[SCALER] freeHeap ${(freeHeap / 1e6).toFixed(1)}MB → maxKeys: ${maxKeys}`); } } setInterval(scaleCache, 60_000); scaleCache(); export default cache;