Caché en Node.js: Redis, Memcached y Node-Cache

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Caché en JavaScript (Node.js): Redis y otras herramientas



El caché es una de las estrategias clave para optimizar el rendimiento de aplicaciones de servidor en Node.js. Permite reducir la carga en las bases de datos, disminuir el tiempo de respuesta de las API y reducir los costos de infraestructura. En este artículo, analizaremos las principales herramientas de caché para Node.js: Redis, Node-Cache (biblioteca integrada) y Memcached, compararemos sus enfoques y mostraremos ejemplos de código reales.



¿Por qué es necesario el caché en Node.js?

Sin caché, cada solicitud a un recurso popular puede provocar múltiples accesos a la base de datos o API externas. El caché guarda los datos solicitados con frecuencia en un almacenamiento rápido (memoria RAM), lo que proporciona:

  • Reducción del tiempo de respuesta (latencia) de 100-500 ms a 1-5 ms.
  • Disminución del número de solicitudes a la BD y servicios externos.
  • Aumento del rendimiento del servidor (RPS).


1. Redis — el rey del caché

Redis es un almacén de datos en memoria de tipo clave-valor, que se utiliza a menudo como caché, broker de mensajes y base de datos. En Node.js, para trabajar con Redis se utiliza la biblioteca redis (o ioredis).



Instalación y conexión

npm install redis


const redis = require('redis');const client = redis.createClient({  url: 'redis://localhost:6379'});

client.on('error', (err) => console.error('Redis Error:', err));await client.connect();

// Ejemplo de almacenamiento en caché con TTLasync function getCachedData(key) { const cached = await client.get(key); if (cached) return JSON.parse(cached);

const freshData = { message: 'Hello from DB', time: Date.now() }; await client.setEx(key, 60, JSON.stringify(freshData)); // TTL 60 seg return freshData;}


Características de Redis para Node.js

  • Soporte TTL — eliminación automática de registros obsoletos.
  • Estructuras de datos — cadenas, listas, conjuntos, hashes, conjuntos ordenados.
  • Pub/Sub — permite construir sistemas de notificaciones en tiempo real.
  • Clustering — escalado horizontal sin pérdida de rendimiento.


2. Node-Cache — caché ligero en memoria sin dependencias externas

Node-Cache es una biblioteca simple para almacenar datos en caché directamente en la memoria del proceso Node.js. Es ideal para proyectos pequeños, microservicios o cuando no se desea levantar Redis.



Instalación y ejemplo

npm install node-cache


const NodeCache = require('node-cache');const myCache = new NodeCache({ stdTTL: 100, checkperiod: 120 });

// Guardar datosmyCache.set('user:123', { name: 'Alice', role: 'admin' });

// Obtener datosconst user = myCache.get('user:123');if (user === undefined) { // datos no están en caché — es necesario cargar desde la BD console.log('Cache miss');} else { console.log('Cache hit:', user);}

// Eliminar por clavemyCache.del('user:123');

// Limpiar todo el cachémyCache.flushAll();


Ventajas y desventajas de Node-Cache

  • Ventajas: no requiere servidor externo, API simple, limpieza automática por TTL.
  • Desventajas: el caché se almacena solo en un proceso — al reiniciar el servidor los datos se pierden; no se puede usar entre múltiples instancias de Node.js.


3. Memcached — caché distribuido con mínimo overhead

Memcached es otro almacenamiento en memoria popular, optimizado para caché. En Node.js, la biblioteca más utilizada es memcached.



Instalación y ejemplo

npm install memcached


const Memcached = require('memcached');const memcac                    

Recommendations