Caché - code-mirror-arsw/code_mirror_front GitHub Wiki
⚡ Caché (Redis)
Este proyecto utiliza Redis como sistema de caché y transporte ligero para acelerar las operaciones en tiempo real. Redis no solo actúa como una caché tradicional de lectura/escritura, sino que se aprovecha para funciones de pub/sub y sincronización en vivo.
🚀 ¿Para qué usamos Redis?
🎤 1. Comunicación de Audio en Tiempo Real (WebRTC)
Redis se utiliza para sincronizar mensajes de señalización WebRTC cuando hay múltiples instancias del servicio. A través de canales pub/sub, los mensajes de offer
, answer
y ICE candidates
se distribuyen en tiempo real entre los participantes conectados a distintas instancias o nodos.
- Permite escalar horizontalmente el
stream-service
sin perder sincronización. - Garantiza que todos los participantes de la sala reciban los eventos aunque estén conectados a diferentes nodos del backend.
📝 2. Edición de Texto Colaborativa (WebSocket Binario)
En el editor colaborativo de código (por ejemplo, usando Y.js o CRDTs), Redis actúa como bus de eventos para:
- Difundir los deltas o actualizaciones de texto entre los usuarios.
- Asegurar consistencia entre múltiples réplicas de la sala de edición.
Esto permite que múltiples usuarios editen el mismo documento en tiempo real, sin que el servidor mantenga el estado completo en memoria.
🧱 Stack Utilizado
Componente | Propósito |
---|---|
Redis Server | Motor de caché y pub/sub central |
Spring Data Redis | Integración desde servicios Java |
Redis Channels | Canales lógicos para cada sala |
📌 Notas Técnicas
- El sistema no almacena el contenido de texto ni audio en Redis de forma permanente.
- Redis es temporal y efímero: si se reinicia, el sistema puede continuar porque el estado persistente está en la base de datos.
- Cada sala (de entrevista) puede tener su propio namespace o canal Redis.