@jysperu/load-cache
v1.0.0
Published
Cache manager with memory and Redis providers, plus fallback support.
Maintainers
Readme
@jysperu/load-cache
Libreria de cache para Node.js con proveedor en memoria, proveedor Redis, soporte de TTL/tags y fallback automatico cuando falla el proveedor primario.
Caracteristicas
- API asincrona unificada:
get,set,has,del,clear,invalidateTag. - Proveedor en memoria sin dependencias externas.
- Proveedor Redis con soporte de TTL, tags y limpieza de indices por etiquetas.
- Fallback automatico entre proveedores por errores de conexion.
- Build de libreria con Vite en formato ESM + CJS + tipos TypeScript.
Instalacion
npm install @jysperu/load-cacheAPI Publica
import cacheManager, {
CacheManager,
CacheEntity,
MemoryCacheProvider,
RedisCacheProvider,
} from "@jysperu/load-cache";Tambien se exportan utilidades: serializeValue, deserializeValue, normalizeTTL, normalizeTags.
Uso Basico
import { CacheManager, RedisCacheProvider, MemoryCacheProvider } from "@jysperu/load-cache";
const manager = new CacheManager({
env: {
CACHE_PREFIX: "app:",
CACHE_PROVIDER: "redis",
},
});
manager.registerProvider(
"redis",
new RedisCacheProvider({
prefix: "app:",
client: RedisCacheProvider.buildClient({ url: "redis://127.0.0.1:6379" }),
}),
1,
);
manager.registerProvider("memory", new MemoryCacheProvider({ prefix: "app:" }), 9999);
await manager.connect();
await manager.set("user:1", { id: 1, name: "Ana" });
const user = await manager.get("user:1");Cache Miss Con Factory
const report = await manager.get("report:daily", async (entity) => {
entity.setTTL(60);
entity.setTags(["reports", "daily"]);
return buildDailyReport();
});Variables De Entorno Soportadas
CACHE_PROVIDER:redisomemory.CACHE_PREFIX: prefijo global para claves.CACHE_TTL: TTL por defecto en segundos.CACHE_REDIS_URL: URL completa de Redis.CACHE_REDIS_HOST: host de Redis.CACHE_REDIS_PORT: puerto Redis.CACHE_REDIS_DB: indice de base de datos Redis.CACHE_REDIS_KEY_SEPARATOR: separador para metadatos internos.CACHE_REDIS_MAX_CONNECTION_ERRORS: maximo de errores de conexion antes de bloquear intentos.
Scripts
npm test
npm run test:integration
npm run buildPara ejecutar el test de integracion Redis:
PowerShell:
$env:RUN_REDIS_INTEGRATION="1"
$env:CACHE_REDIS_URL="redis://127.0.0.1:6379"
npm run test:integrationArtefactos De Build
dist/cacheManager.esm.jsdist/cacheManager.cjs.jsdist/cacheManager.d.ts
Licencia
MIT
