Skip to main content
Redis es un almacén clave-valor en memoria que se usa como backend en muchas funcionalidades de Laravel. Explicamos su uso en Laravel: configuración, operaciones y Pub/Sub.

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 array redis de config/database.php.

Variables de entorno

Configura la conexión en .env.
También puedes indicarla con formato URL.

Conexión TLS / SSL

Para cifrado TLS, indica la opción scheme.

Clustering

Para usar varios servidores Redis como cluster, utiliza la clave clusters.
Por defecto, 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 paquete predis/predis y cambia REDIS_CLIENT a predis.
Puedes añadir parámetros de conexión específicos de Predis.

Configuración de reintentos de Predis

Desde Predis 3.4.0 hay reintentos y backoff integrados. Con max_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.
Con Redis cluster y Predis, configura los reintentos en la opción 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.
Serializadores soportados: Algoritmos de compresión soportados:

Operaciones con Redis

Fachada Redis

Con la fachada Redis puedes ejecutar cualquier comando de Redis. La fachada reenvía los comandos al servidor usando métodos mágicos.
Los argumentos de los comandos se pasan tal cual al método.
También puedes usar command para indicar explícitamente el nombre del comando y sus argumentos.

Uso de varias conexiones

Define varias conexiones Redis en config/database.php y cambia con connection().

Transacciones

El método transaction() envuelve los comandos MULTI/EXEC de Redis. Todos los comandos dentro del closure se ejecutan de forma atómica.
Dentro de una transacción no puedes obtener valores de Redis. El closure completo se ejecuta y después EXEC los ejecuta todos.

Scripts Lua

Con eval() 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.
Orden de los argumentos: script Lua → número de claves → nombres de claves… → argumentos adicionales… 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.
El pipeline solo agrupa comandos en el envío; no es atómico. Si necesitas atomicidad, usa transacciones o scripts Lua.

Pub / Sub

Con los comandos publish / 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

Con psubscribe() puedes suscribirte a patrones.

Resumen

  • 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
  • Define varias conexiones Redis en config/database.php según el uso (default / cache, etc.)
  • En clusters, usa la clave clusters
  • En producción, considera TLS y configuración de credenciales
Última modificación el 13 de julio de 2026