¿Qué es node-cache y para qué sirve?
La librería node-cache es un sistema de caché simple y rápido para Node.js, escrito en TypeScript. Permite almacenar datos en memoria (in-memory cache), lo que acelera significativamente el acceso a información solicitada con frecuencia (por ejemplo, resultados de consultas a bases de datos, respuestas de API, cálculos). En TypeScript, node-cache proporciona una tipificación estricta, lo que hace que el código sea más predecible y seguro.
El almacenamiento en caché es necesario para reducir la carga en el servidor, disminuir el tiempo de respuesta y ahorrar recursos en operaciones repetitivas. Node-cache es ideal para proyectos pequeños y medianos donde no se requiere un caché distribuido (como Redis), pero se necesita un caché ligero en memoria.
Instalación
Instale el paquete a través de npm o yarn:
npm install node-cache
# o
yarn add node-cachePara TypeScript, los tipos ya están incluidos en el paquete, no es necesario instalar @types adicionalmente.
Funciones principales
- set(key, value, ttl) — guarda un valor por clave con un tiempo de vida opcional (TTL) en segundos.
- get(key) — obtiene el valor por clave. Devuelve undefined si la clave no existe o ha expirado.
- del(key) — elimina una o varias claves.
- has(key) — verifica si una clave existe en el caché.
- flushAll() — limpia todo el caché.
- getStats() — devuelve estadísticas (número de claves, aciertos, fallos).
Ejemplo de código en TypeScript
import NodeCache from 'node-cache';
// Creamos una instancia de caché con TTL predeterminado de 60 segundos
const myCache = new NodeCache({ stdTTL: 60 });
// Valor tipificado
interface User {
id: number;
name: string;
}
// Guardamos datos
const user: User = { id: 1, name: 'Alice' };
myCache.set('user_1', user);
// Obtenemos datos
const cachedUser = myCache.get<User>('user_1');
if (cachedUser) {
console.log(cachedUser.name); // Alice
} else {
console.log('El caché está vacío');
}
// Verificación de existencia
console.log(myCache.has('user_1')); // true
// Eliminación
myCache.del('user_1');
// Limpieza total del caché
myCache.flushAll();Cuándo usar node-cache
- Datos solicitados con frecuencia: por ejemplo, lista de países, tipos de cambio, configuraciones.
- Resultados de cálculos pesados: almacenar en caché el resultado de una operación costosa durante unos segundos.
- Puertas de enlace de API: almacenar en caché las respuestas de API externas para reducir latencias y límites.
- Sesiones: almacenamiento temporal de datos de sesión (si no se requiere persistencia).
Evite node-cache si necesita un caché distribuido entre varios servidores; en ese caso, es mejor usar Redis. Tampoco es adecuado para grandes volúmenes de datos (más de 1-2 GB), ya que se almacena en la memoria RAM.
Node-cache es una excelente opción para escenarios simples de almacenamiento en caché en TypeScript, donde la velocidad y la configuración mínima son importantes.