Redis Laravel: O Redis é um data structure store (armazenamento de estrutura de dados) em memória, de código aberto, usado como cache, message broker (agente de mensagens) e banco de dados. Integrado ao Laravel, ele se torna uma ferramenta fundamental para melhorar a performance, reduzir a latência de acesso ao banco de dados e habilitar recursos em tempo real.
Este artigo detalha a configuração e o uso do Redis Laravel para Cache, Filas e o padrão Pub/Sub.
1. ⚙️ Configuração e Clientes
O Laravel suporta o Redis através de duas bibliotecas PHP: Predis (baseada em PHP) e PhpRedis (extensão C, mais rápida). O uso do PhpRedis é altamente recomendado devido ao seu desempenho superior.
A. Instalação do PhpRedis (Recomendado)
Antes de configurar no Laravel, a extensão PHP deve estar instalada no servidor:
Bash
# Exemplo para sistemas Debian/Ubuntu com PHP 8.3
sudo apt install php8.3-redis
# Reinicie o seu servidor web (ex: php-fpm ou Apache)
B. Configuração do Laravel
As configurações de conexão são definidas em config/database.php, dentro da chave redis.
PHP
// No arquivo .env
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0 # Banco de dados padrão (default)
REDIS_CACHE_DB=1 # Banco de dados dedicado para cache
// Em config/database.php
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'), // Define qual biblioteca usar
'default' => [/* ... conexões usando REDIS_DB ... */],
'cache' => [/* ... conexões usando REDIS_CACHE_DB ... */],
],
C. Configuração de Cluster
Para alta disponibilidade e escalabilidade horizontal, o Laravel suporta nativamente o Redis Cluster, permitindo que você liste múltiplos nós no arquivo de configuração:
PHP
'clusters' => [
'default' => [
[
'host' => env('REDIS_HOST_1', '127.0.0.1'),
'port' => env('REDIS_PORT_1', 6379),
// ...
],
[
'host' => env('REDIS_HOST_2', '127.0.0.1'),
'port' => env('REDIS_PORT_2', 6380),
// ...
],
],
],
2. 🗃️ Interagindo com a Facade Redis
A Facade Redis permite executar qualquer comando nativo do Redis diretamente no Laravel.
PHP
use Illuminate\Support\Facades\Redis;
// SET (Definindo um valor)
Redis::set('username:1', 'João da Silva');
// GET (Obtendo um valor)
$username = Redis::get('username:1'); // "João da Silva"
// EXPIRE (Definindo tempo de expiração em segundos)
Redis::expire('username:1', 3600); // Expira em 1 hora
// INCR (Incrementando um contador)
Redis::incr('views:post:12');
// RPUSH (Adicionando a uma lista)
Redis::rpush('user_feed:5', 'post:301', 'post:302');
$feed = Redis::lrange('user_feed:5', 0, 4); // Obtém os 5 posts mais recentes
3. 🚀 Redis como Cache Padrão
O Redis é um dos drivers de cache mais rápidos disponíveis. Para usá-lo globalmente, ajuste o arquivo .env:
.ENV
CACHE_STORE=redis
O Laravel usa a conexão cache definida em config/database.php (DB 1) por padrão.
A. Uso da Facade Cache
O método remember é ideal para caching de dados do banco de dados:
PHP
use Illuminate\Support\Facades\Cache;
use App\Models\Product;
Route::get('/produtos', function () {
// Tenta obter 'produtos_home' do cache.
// Se não existir, executa a função e armazena o resultado por 60 segundos.
$produtos = Cache::remember('produtos_home', 60, function () {
return Product::all(); // <-- Consulta lenta ao banco de dados
});
return view('produtos.index', ['produtos' => $produtos]);
});
Nota: Se os dados do produto forem alterados, você deve usar
Cache::forget('produtos_home')para invalidar o cache imediatamente.
4. 📢 Pub/Sub (Publicar e Assinar)
O Redis Pub/Sub implementa o padrão Message Broker, permitindo comunicação assíncrona em tempo real entre diferentes serviços ou processos da sua aplicação (ex: workers).
A. Publicando uma Mensagem
Um processo envia uma mensagem para um canal específico:
PHP
use Illuminate\Support\Facades\Redis;
// Publica uma mensagem no canal 'notificacoes.vendas'
Redis::publish('notificacoes.vendas', json_encode([
'venda_id' => 123,
'valor' => 550.00
]));
B. Assinando um Canal
Um processo worker ou um comando Artisan fica ouvindo o canal:
PHP
// Este código deve ser executado em um script de longa duração (worker)
Redis::subscribe(['notificacoes.vendas'], function ($message) {
$data = json_decode($message);
// Lógica para processar a notificação, como enviar um email ou atualizar um dashboard
// echo "Nova venda recebida: ID " . $data->venda_id;
});
5. 🗂️ Filas (Queues) com Redis
O Redis é frequentemente usado como o driver de fila padrão do Laravel, devido à sua velocidade e robustez.
.ENV
# No seu .env
QUEUE_CONNECTION=redis
Quando você despacha um job (tarefa assíncrona), ele é armazenado no Redis e processado por um worker em segundo plano, otimizando o tempo de resposta das requisições web.
PHP
use App\Jobs\ProcessOrder;
// A requisição web termina rapidamente
ProcessOrder::dispatch($order)->onQueue('pedidos');
✅ Conclusão Redis Laravel
Redis Laravel: A integração do Redis com o Laravel é um divisor de águas em performance. Utilizando o PhpRedis e a Facade Cache, você reduz drasticamente a carga do banco de dados. Além disso, o Redis habilita recursos avançados como Filas assíncronas e Pub/Sub para comunicação em tempo real, tornando-o indispensável para construir aplicações modernas, rápidas e escaláveis.
Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:















