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/predisConexã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.iniExemplos 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 Também na biblioteca
Tokens JWT em Go (Golang): criação e verificação com exemplos
godotenv para Go: guia completo com exemplos práticos
Gerador de QR Codes em Swift: biblioteca EFQRCode para iOS e macOS
Aprendizado de Máquina em PHP: Visão Geral de Bibliotecas e Ferramentas
Trabalhando com Excel em Kotlin: bibliotecas Apache POI e wrappers Kotlin