Cliente Redis para PHP: Predis — instalação, conexão, 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

Predis — cliente Redis flexível para PHP

\n\n

Redis é um armazenamento de dados do tipo chave-valor de alto desempenho, frequentemente usado para cache, sessões, filas e aplicações em tempo real. Para trabalhar com Redis a partir do PHP, existem várias bibliotecas, e uma das mais populares é o Predis. É uma implementação totalmente em PHP do cliente, que não requer a instalação de extensões adicionais (ao contrário do phpredis). O Predis suporta todos os comandos principais do Redis, clusterização, replicação, Pub/Sub e trabalho com transações.

\n\n

Instalação do Predis via Composer

\n\n

A instalação do Predis é feita da forma padrão através do Composer. Certifique-se de que o Composer está instalado no seu projeto e execute o comando:

\n\n
composer require predis/predis
\n\n

Após a instalação, a dependência aparecerá no arquivo composer.json e a biblioteca estará disponível na pasta vendor.

\n\n

Conexão ao servidor Redis

\n\n

Para começar, crie uma instância do cliente Predis. Por padrão, ele se conecta a 127.0.0.1:6379, mas você pode especificar seus próprios parâmetros.

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Predis\\Client;\n\n// Conexão com parâmetros padrão\n$client = new Client();\n\n// Ou especificando explicitamente o host e a porta\n$client = new Client([\n    'scheme' => 'tcp',\n    'host'   => '127.0.0.1',\n    'port'   => 6379,\n]);\n\n// Se for necessária uma senha\n$client = new Client([\n    'host' => 'localhost',\n    'port' => 6379,\n    'password' => 'my_secret_password',\n]);\n?>
\n\n

Se o Redis estiver rodando em um servidor remoto ou usando um socket UNIX, basta alterar os parâmetros correspondentes.

\n\n

Operações básicas com dados

\n\n

O Predis suporta todos os tipos de dados padrão do Redis: strings, hashes, listas, conjuntos e conjuntos ordenados. Vamos ver exemplos básicos.

\n\n

Trabalhando com strings

\n\n
<?php\n// Definir um valor\n$client->set('user:100:name', 'Ivan Petrov');\n\n// Obter um valor\n$name = $client->get('user:100:name');\necho $name; // Ivan Petrov\n\n// Verificar se a chave existe\nif ($client->exists('user:100:name')) {\n    echo 'A chave existe';\n}\n\n// Excluir uma chave\n$client->del(['user:100:name']);\n?>
\n\n

Trabalhando com hashes

\n\n

Hashes são convenientes para armazenar objetos — por exemplo, dados de usuário.

\n\n
<?php\n// Definir campos de um hash\n$client->hmset('user:100', [\n    'name'  => 'Anna Smirnova',\n    'email' => 'anna@example.com',\n    'age'   => 28,\n]);\n\n// Obter um campo\n$email = $client->hget('user:100', 'email');\n\n// Obter todos os campos\n$userData = $client->hgetall('user:100');\nprint_r($userData);\n\n// Incrementar um campo numérico\n$client->hincrby('user:100', 'age', 1);\n?>
\n\n

Trabalhando com listas

\n\n

As listas do Redis são ideais para filas e logs.

\n\n
<?php\n// Adicionar elementos ao início da lista (pilha)\n$client->lpush('tasks', 'task1', 'task2', 'task3');\n\n// Adicionar ao final da lista (fila)\n$client->rpush('tasks', 'task4');\n\n// Obter todos os elementos da lista\n$allTasks = $client->lrange('tasks', 0, -1);\nprint_r($allTasks);\n\n// Extrair o primeiro elemento\n$first = $client->lpop('tasks');\necho $first; // task3\n?>
\n\n

Definindo o tempo de vida da chave (TTL)

\n\n

Um dos recursos poderosos do Redis é a exclusão automática de chaves após um determinado tempo. Isso é frequentemente usado para cache.

\n\n
<?php\n// Definir uma chave com TTL de 60 segundos\n$client->setex('cache:page', 60, 'Conteúdo HTML da página');\n\n// Ou para uma chave já existente\n$client->expire('cache:page', 120);\n\n// Verificar o tempo de vida restante\n$ttl = $client->ttl('cache:page');\necho "Restam $ttl segundos";\n?>
\n\n

Trabalhando com transações

\n\n

O Predis suporta multi-comandos (trans

Recommendations