Redis en Node.js
Tutorial Redis en Node.js paso a paso: instalación, conexión, cache de objetos, pub/sub, expiración de claves y patrones de uso en producción para APIs y
Redis sigue siendo la opcion por defecto para cache, colas de trabajo y sesiones en 2026. Si ya sabes Node.js pero nunca lo has montado, este tutorial te lleva desde la instalacion a los patrones mas utiles.
Instalacion en local
# macOS con Homebrew brew install redis brew services start redis # Ubuntu/Debian sudo apt install redis-server sudo systemctl enable --now redis-server # Docker (recomendado para aislar) docker run -d --name redis -p 6379:6379 redis:7-alpine
Cliente Node.js recomendado
Usa ioredis para produccion. Es mas robusto, soporta cluster, pipelining y reconnect automatico.
npm install ioredis
// redis.js
import Redis from 'ioredis';
export const redis = new Redis({
host: process.env.REDIS_HOST || 'localhost',
port: 6379,
password: process.env.REDIS_PASS,
maxRetriesPerRequest: 3,
});
redis.on('error', (err) => console.error('Redis error:', err));
Patron cache-aside
async function getUser(id) {
const key = `user:${id}`;
const cached = await redis.get(key);
if (cached) return JSON.parse(cached);
const user = await db.user.findUnique({ where: { id } });
if (user) {
await redis.set(key, JSON.stringify(user), 'EX', 300); // 5 min
}
return user;
}
Invalidacion al actualizar
async function updateUser(id, data) {
const user = await db.user.update({ where: { id }, data });
await redis.del(`user:${id}`);
return user;
}
Rate limiting simple
async function rateLimit(ip, max = 10, windowSec = 60) {
const key = `rl:${ip}`;
const count = await redis.incr(key);
if (count === 1) await redis.expire(key, windowSec);
return count <= max;
}
Colas de trabajo con BullMQ
Para tareas en background (envio de emails, procesamiento pesado, jobs programados) usa BullMQ sobre Redis. Es de largo el mas usado en Node.
En la práctica: Redis en Node.js en producción
En ContacPro programamos webs, plataformas y software a medida desde Córdoba. Estos son casos reales donde aplicamos los patrones explicados en este artículo.
Estilyo comparador moda
69.000 productos indexados, 119 tiendas, 720 marcas. PHP 7 API + React 19 con prerender selectivo para bots, Lighthouse 98/100/100 en móvil. Ejemplo de desarrollo web a medida a escala.
Brote (WordPress custom)
WordPress con Astra + brote-child-v2 optimizado. Plugin propio MakIA Reservas (36 clases, 12 tablas). Lighthouse 100/100/100 sin plugins de "optimización". Producción en Solete Repsol.
¿Necesitas desarrollo web a medida? Programamos webs con WordPress, Next.js, Astro o headless CMS desde Córdoba. Core Web Vitals verdes, SEO técnico desde el inicio y código entregado al cliente. Ver desarrollo web a medida →
Buenas practicas
- Usa prefijos por feature:
user:,cart:,session:. - Siempre TTL (no dejes claves eternas salvo que sea intencional).
- Monitoriza con
redis-cli INFOy herramientas como RedisInsight. - En produccion: habilita persistencia AOF y replicas.
- Si necesitas multi-tenant, usa DBs distintas o prefijos.
Con Redis bien configurado puedes quitar el 80% de la carga de tu BD relacional. Si tienes un backend que ha empezado a sufrir de latencia, probablemente te falte Redis. Hablamos en software empresarial.
