Redis más allá del caché: Colas, sesiones y Pub/Sub
Redis se suele reducir a caching. Sin embargo, ofrece potentes estructuras de datos para colas, sesiones, rate limiting y mensajería en tiempo real.
Redis: Una navaja suiza
Redis es un almacén de datos en memoria con latencia inferior al milisegundo. Pero es mucho más que una caché Key-Value: las estructuras de datos integradas lo convierten en una herramienta versátil.
Colas con Redis
Laravel Horizon utiliza Redis Lists y Sorted Sets para las Job Queues. Las ventajas frente a las colas basadas en base de datos:
- Rendimiento: Redis procesa millones de Jobs por segundo, sin bloqueos de base de datos ni polling.
- Prioridades: Múltiples colas con asignaciones de workers configurables.
- Monitoreo: Dashboard de Horizon con visión en tiempo real de la utilización de colas y errores.
Sessions y Rate Limiting
- Sessions: Las Sessions en Redis son más rápidas que las Sessions en base de datos y sobreviven a los despliegues (a diferencia de las Sessions en archivo).
- Rate Limiting: Redis INCR con TTL es la base del Rate Limiter de Laravel: atómico y rápido.
- Distributed Locks:
Cache::lock()utiliza Redis para operaciones Mutex en múltiples servidores.
Pub/Sub y Streams
- Pub/Sub: Mensajería en tiempo real entre servicios, ideal para Laravel Broadcasting con Websockets.
- Streams: Colas de mensajes persistentes con Consumer Groups, similar a Kafka pero más fácil de operar.
Nuestra recomendación
En cada proyecto Laravel utilizamos Redis, al menos para caché y sessions, y a menudo también para colas y broadcasting. Con Redis Sentinel o Cluster, la alta disponibilidad tampoco es un problema.
¿Preguntas sobre este tema?
Le asesoramos con gusto sobre las tecnologías y soluciones descritas en este artículo.
Contactar