Caché
Usar Redis como driver de caché
Colas
Usar Redis como driver de colas
Broadcasting
Comunicación en tiempo real con Pub/Sub
¿Qué es Redis?
Redis es un almacén clave-valor rápido de código abierto. Soporta múltiples estructuras de datos (strings, hashes, listas, sets, sorted sets, etc.) y se conoce también como “servidor de estructuras de datos”. En Laravel, Redis se usa para:Elección de cliente
Laravel soporta dos clientes: PhpRedis (extensión de PHP) y Predis (paquete PHP).En Laravel 13 el cliente por defecto es PhpRedis. En producción se recomienda PhpRedis.
Con Laravel Sail, PhpRedis ya viene instalado.
Configuración
config/database.php
La configuración de Redis se gestiona en el arrayredis de config/database.php.
Variables de entorno
Configura la conexión en.env.
Conexión TLS / SSL
Para cifrado TLS, indica la opciónscheme.
Clustering
Para usar varios servidores Redis como cluster, utiliza la claveclusters.
options.cluster es redis, es decir, se usa el clustering nativo de Redis.
Como gestiona el failover automáticamente, es la configuración recomendada en producción.
Para usar client-side sharding con Predis, elimina options.cluster.
Pero el client-side sharding no gestiona failover, así que solo es adecuado para datos temporales como caché.
Configuración de Predis
Para usar Predis, instala el paquetepredis/predis y cambia REDIS_CLIENT a predis.
Configuración de reintentos de Predis
Desde Predis 3.4.0 hay reintentos y backoff integrados. Conmax_retries indicas el número de reintentos y con retry la estrategia de backoff. retry acepta un array cuya clave es una de las clases NoBackoff, EqualBackoff o ExponentialBackoff.
parameters de la configuración del cluster.
Configuración de PhpRedis
PhpRedis se instala vía PECL (ya viene en Laravel Sail). PhpRedis admite estas opciones adicionales:name, persistent, persistent_id, prefix, read_timeout, retry_interval,
max_retries, backoff_algorithm, backoff_base, backoff_cap, timeout, context.
Reintentos y backoff
Configura el comportamiento de reintentos ante fallos de conexión. Algoritmos soportados:default, decorrelated_jitter, equal_jitter, exponential, uniform, constant.
Conexión con socket Unix
Si conectas a un Redis en el mismo servidor, usa un socket Unix para reducir la sobrecarga de TCP.Serialización y compresión
En PhpRedis puedes configurar la serialización y el algoritmo de compresión.
Algoritmos de compresión soportados:
Operaciones con Redis
Fachada Redis
Con la fachadaRedis puedes ejecutar cualquier comando de Redis.
La fachada reenvía los comandos al servidor usando métodos mágicos.
command para indicar explícitamente el nombre del comando y sus argumentos.
Uso de varias conexiones
Define varias conexiones Redis enconfig/database.php y cambia con connection().
Transacciones
El métodotransaction() envuelve los comandos MULTI/EXEC de Redis.
Todos los comandos dentro del closure se ejecutan de forma atómica.
Scripts Lua
Coneval() ejecutas un script Lua de forma atómica.
Es más flexible que las transacciones porque puedes leer y actualizar valores de Redis dentro del script.
KEYS[1], KEYS[2] son los nombres de las claves; ARGV[1] en adelante son los argumentos adicionales.
Pipeline
Envía muchos comandos de una vez para reducir los round trips de red.Pub / Sub
Con los comandospublish / subscribe puedes intercambiar mensajes a través de canales.
Suscriptor
subscribe() es un proceso de larga duración, así que se invoca dentro de un comando Artisan.
Publicador
Publica desde otra solicitud o proceso.Suscripción con comodines
Conpsubscribe() puedes suscribirte a patrones.
Resumen
Elección de cliente
Elección de cliente
- Producción: PhpRedis (extensión PECL, alto rendimiento)
- Desarrollo o entornos donde no puedas instalar la extensión: Predis (paquete Composer)
- Laravel Sail: ya trae PhpRedis por defecto
Puntos de configuración de la conexión
Puntos de configuración de la conexión
- Define varias conexiones Redis en
config/database.phpsegún el uso (default/cache, etc.) - En clusters, usa la clave
clusters - En producción, considera TLS y configuración de credenciales
Cuándo usar cada operación
Cuándo usar cada operación