Caché en TypeScript: Redis, Memcached y soluciones integradas

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

Almacenamiento en caché en TypeScript: Redis, Memcached y soluciones integradas



Las aplicaciones web modernas en TypeScript requieren alta velocidad de respuesta y una gestión eficiente de los recursos. Una de las herramientas clave para lograr este objetivo es el almacenamiento en caché. En este artículo, analizaremos en detalle tres enfoques principales para el almacenamiento en caché en el ecosistema TypeScript/Node.js: el uso de Redis, Memcached y soluciones integradas (caché en memoria). Aprenderá cómo elegir la herramienta adecuada para su tarea y verá ejemplos de código funcionales.



¿Por qué es necesario el almacenamiento en caché en TypeScript?



El almacenamiento en caché permite almacenar temporalmente datos solicitados con frecuencia en un almacenamiento rápido para reducir el tiempo de respuesta y disminuir la carga en las bases de datos o API externas. En TypeScript, que se ejecuta en Node.js, el almacenamiento en caché es especialmente útil para:

  • Acelerar consultas repetitivas a la base de datos;
  • Reducir las latencias al acceder a servicios externos;
  • Optimizar operaciones computacionalmente complejas;
  • Gestionar sesiones de usuarios.


Consideremos los tres tipos principales de almacenamiento en caché disponibles para el desarrollador en TypeScript.



1. Caché integrado (In-Memory Cache)



La forma más simple y rápida es almacenar datos en la memoria del propio proceso de Node.js. Para esto, se puede usar Map o bibliotecas más avanzadas, como node-cache.



Ventajas:

  • Velocidad máxima (sin llamadas de red);
  • Simplicidad de implementación;
  • No requiere instalación de servicios externos.


Desventajas:

  • Los datos se pierden al reiniciar la aplicación;
  • Limitado por la cantidad de RAM de un solo proceso;
  • No funciona en modo clúster (cada proceso tiene su propio caché).


Ejemplo usando node-cache



Instale la biblioteca:

npm install node-cache


Implementación de un servicio de caché simple:

import NodeCache from 'node-cache';

class MemoryCacheService { private cache: NodeCache;

constructor(ttlSeconds: number = 600) { this.cache = new NodeCache({ stdTTL: ttlSeconds, checkperiod: 120 }); }

public get<T>(key: string): T | undefined { return this.cache.get<T>(key); }

public set<T>(key: string, value: T, ttl?: number): boolean { return this.cache.set(key, value, ttl); }

public has(key: string): boolean { return this.cache.has(key); }

public del(key: string): number { return this.cache.del(key); }

public flush(): void { this.cache.flushAll(); }}

// Usoconst cacheService = new MemoryCacheService(300); // TTL = 5 minutos

async function getData(id: string): Promise<any> { const cached = cacheService.get<any>(`data:${id}`); if (cached) { return cached; }

// Simulación de una operación costosa const data = await fetchFromDatabase(id); cacheService.set(`data:${id}`, data); return data;}


2. Almacenamiento en caché con Redis



Redis es un potente almacén de datos en memoria que se utiliza a menudo como caché. Admite estructuras de datos complejas (cadenas, hashes, listas, conjuntos) y puede funcionar en modo clúster.



Ventajas:

  • Persistencia (opcional);
  • Soporte para estructuras de datos complejas (por ejemplo, conjuntos ordenados);
  • Mecanismos TTL (Time-To-Live) integrados;
  • Excelente rendimiento (hasta 100 000 operaciones/segundo);
  • Soporte para Pub/Sub para intercambio de mensajes.


Desventajas:

  • Requiere instalación y configuración de un servidor separado;
  • Utiliza más memoria que las soluciones integradas;
  • Latencias de red (aunque mínimas).


Ejemplo de trabajo con Redis en Typ

Blogs

Book Recommendations