Cliente Redis para PHP: Predis e PhpRedis – conexão e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente Redis para PHP: Predis e PhpRedis



Redis é um armazenamento de dados chave-valor de alto desempenho, que opera em memória RAM. Para interagir com o Redis a partir do PHP, existem duas abordagens principais: a biblioteca PHP pura Predis e a extensão nativa PhpRedis. Neste artigo, abordaremos detalhadamente ambas as ferramentas, sua instalação, comandos básicos e exemplos práticos de uso.



1. Predis – Cliente Redis em PHP Puro



Predis é uma biblioteca totalmente escrita em PHP que não requer a instalação de extensões adicionais. É ideal para ambientes onde não é possível compilar extensões C.



Instalação via Composer

composer require predis/predis


Conexão básica e exemplos

require 'vendor/autoload.php';

use Predis\\Client;

// Conexão padrão (localhost:6379)$redis = new Client();

// Alternativamente com parâmetros explícitos$redis = new Client([ 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379, 'password' => 'secret', // se definido]);

// Trabalhando com strings simples$redis->set('user:1:name', 'Alexei');echo $redis->get('user:1:name'); // Alexei

// Trabalhando com listas$redis->rpush('queue:tasks', 'task1', 'task2', 'task3');$task = $redis->lpop('queue:tasks'); // task1

// Trabalhando com hashes$redis->hset('user:1', 'email', 'alex@example.com');$redis->hset('user:1', 'age', 30);$userData = $redis->hgetall('user:1');// ['email' => 'alex@example.com', 'age' => '30']


Cache com TTL (tempo de vida)

// Salva dados por 1 hora (3600 segundos)$redis->setex('weather:spb', 3600, '{"temp": 15, "humidity": 70}');

// Verifica se a chave existeif ($redis->exists('weather:spb')) { echo $redis->get('weather:spb');} else { // Consulta à API externa e salvamento $data = json_encode(['temp' => 15, 'humidity' => 70]); $redis->setex('weather:spb', 3600, $data);}


Filas de tarefas (listas)

// Adiciona uma tarefa à fila$redis->rpush('email:queue', json_encode([    'to' => 'user@example.com',    'subject' => 'Saudação',    'body' => 'Bem-vindo!']));

// Worker: obtém a tarefa (modo bloqueante)while (true) { $taskRaw = $redis->blpop('email:queue', 5); // timeout de 5 segundos if ($taskRaw) { $task = json_decode($taskRaw[1], true); sendEmail($task['to'], $task['subject'], $task['body']); }}


2. PhpRedis – Extensão Nativa em C



PhpRedis é uma extensão para PHP escrita em C. Ela funciona significativamente mais rápido que o Predis devido à sobrecarga mínima. Requer instalação via PECL ou compilação.



Instalação

# Via PECL (recomendado)pecl install redis

# Ou manualmente (Linux)git clone https://github.com/phpredis/phpredis.gitcd phpredisphpize./configuremake && make install# Adicionar extension=redis.so no php.ini


Exemplos de uso

// Conexão$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->auth('password'); // se a senha estiver definida

// Set / Get$redis->set('counter', 1);$redis->incr('counter');echo $redis->get('counter'); // 2

// Trabalhando com conjuntos$redis->sadd('users:online', 'user1', 'user2', 'user3');$onlineCount = $redis->scard('users:online'); // 3$isOnline = $redis->sismember('users:online', 'user2'); // true

// Pub/Sub (publicador)$redis->publish('channel:news', 'Nova mensagem!');

// Pub/Sub (assinante – script separado)$redis->subscribe(['channel:news'], function ($redis, $channel, $message) { echo "Recebido de $channel: $message";});


Cache de estruturas complexas

// Armazena em cache o resultado de uma consulta SQL$cacheKey = 'articles:l                    

Recommendations