template-saas/docs/03-integraciones/INT-007-redis.md
Adrian Flores Cortes 806612a4db
Some checks are pending
CI / Backend CI (push) Waiting to run
CI / Frontend CI (push) Waiting to run
CI / Security Scan (push) Waiting to run
CI / CI Summary (push) Blocked by required conditions
[REESTRUCTURA-DOCS] refactor: Corregir estructura docs/ segun SIMCO-DOCUMENTACION-PROYECTO
- Renombrar 02-integraciones/ → 03-integraciones/ (resolver prefijo duplicado)
- Renombrar 02-devops/ → 04-devops/ (resolver prefijo duplicado)
- Renombrar architecture/ → 97-adr/ (agregar prefijo numerico)
- Actualizar _MAP.md con nueva estructura y version 2.1.0

Estructura final:
- 00-vision-general/
- 01-modulos/
- 02-especificaciones/
- 03-integraciones/
- 04-devops/
- 97-adr/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 20:34:14 -06:00

4.1 KiB

id title type status priority provider category multi_tenant version created_date updated_date
INT-007 Integracion Redis Cache/Queue Integration Implemented P0 Redis/Upstash Infrastructure false 1.0.0 2026-01-07 2026-01-10

INT-007: Redis Integration

Metadata

Campo Valor
Codigo INT-007
Proveedor Redis (ioredis)
Tipo Cache
Estado Implementado
Multi-tenant Si
Fecha integracion 2026-01-10

Usado por: SAAS-010-webhooks, SAAS-007-notifications

Resumen

Redis como backend para BullMQ (colas de procesamiento).

Uso

  • Cola de webhooks outbound
  • Cola de notificaciones asincronas
  • Cache de sesiones (opcional)

Caracteristicas

  • BullMQ para job processing
  • Retry logic automatico
  • Dead letter queue para fallos
  • Dashboard Bull Board (opcional)

Configuracion

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=... # opcional
REDIS_DB=0

Endpoints/SDK Utilizados

Operacion Comando Descripcion
Set cache SET key value EX ttl Guardar con expiracion
Get cache GET key Obtener valor
Delete DEL key Eliminar clave
Exists EXISTS key Verificar existencia
TTL TTL key Tiempo restante
Increment INCR key Incrementar contador
Hash set HSET hash field value Guardar en hash
Hash get HGET hash field Obtener de hash
List push LPUSH list value Agregar a lista
List pop RPOP list Obtener de lista
Set add SADD set member Agregar a set
Set members SMEMBERS set Obtener miembros
Sorted add ZADD zset score member Agregar a sorted set
Sorted range ZRANGE zset start stop Rango de sorted set
Publish PUBLISH channel message Publicar mensaje
Subscribe SUBSCRIBE channel Suscribirse a canal
Expire EXPIRE key seconds Establecer TTL
Scan SCAN cursor MATCH pattern Buscar claves

Dependencias NPM

{
  "@nestjs/bullmq": "^10.x",
  "bullmq": "^5.x",
  "ioredis": "^5.x"
}

Rate Limits

Limite Valor Accion si excede
Conexiones 10000 por instancia Pool de conexiones
Comandos/seg 100000+ Depende del hardware

Manejo de Errores

Codigo Descripcion Accion
ECONNREFUSED Conexion rechazada Verificar servicio Redis
ETIMEDOUT Timeout Retry con backoff
NOAUTH Sin autenticacion Configurar REDIS_PASSWORD
OOM Sin memoria Escalar o limpiar cache

Fallbacks

Estrategia Redis Fallback

Escenario Estrategia
Redis no disponible Memory cache temporal (node-cache)
Conexion perdida Reconexion automatica con backoff
Cluster failover Redis Sentinel para HA
Memoria llena Eviction LRU automatico

Configuracion Sentinel (Alta Disponibilidad)

// Configuracion recomendada para produccion
{
  sentinels: [
    { host: 'sentinel-1', port: 26379 },
    { host: 'sentinel-2', port: 26379 },
    { host: 'sentinel-3', port: 26379 }
  ],
  name: 'mymaster',
  sentinelRetryStrategy: (times) => Math.min(times * 100, 3000)
}

Circuit Breaker

  • Umbral apertura: 5 fallos consecutivos
  • Timeout semi-abierto: 30 segundos
  • Fallback: In-memory cache con TTL reducido

Multi-tenant

  • Credenciales: Global (una instancia Redis compartida)
  • Configuracion: Por tenant via prefijos de clave
  • Aislamiento: Prefijo tenant_id en todas las operaciones (keys: tenant:{tenant_id}:*)

Testing

Sandbox/Test Mode

  • Usar Redis local o redis-mock para tests
  • DB separada para tests (REDIS_DB=1)
  • Fixtures disponibles para testing unitario

Monitoreo

Metrica Descripcion Alerta
Latencia Tiempo de respuesta >2s
Errores Tasa de errores >1%
Disponibilidad Uptime del servicio <99.9%
Memoria Uso de memoria >80%

Referencias

  • Modulo webhooks: SAAS-010-webhooks.md
  • Modulo notifications: SAAS-007-notifications.md

Ultima actualizacion: 2026-01-10 Version: 1.0.0