Predis — cliente Redis flexível para PHP
\n\nRedis é 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\nInstalação do Predis via Composer
\n\nA 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\ncomposer require predis/predis\n\nApós a instalação, a dependência aparecerá no arquivo composer.json e a biblioteca estará disponível na pasta vendor.
Conexão ao servidor Redis
\n\nPara 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.
<?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\nSe o Redis estiver rodando em um servidor remoto ou usando um socket UNIX, basta alterar os parâmetros correspondentes.
\n\nOperações básicas com dados
\n\nO Predis suporta todos os tipos de dados padrão do Redis: strings, hashes, listas, conjuntos e conjuntos ordenados. Vamos ver exemplos básicos.
\n\nTrabalhando 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\nTrabalhando com hashes
\n\nHashes 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\nTrabalhando com listas
\n\nAs 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\nDefinindo o tempo de vida da chave (TTL)
\n\nUm 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\nTrabalhando com transações
\n\nO Predis suporta multi-comandos (trans
Também na biblioteca
Análise de HTML em Rust: bibliotecas e exemplos para web scraping
Cliente Redis (Jedis) para Java: guia completo com exemplos
Cliente Redis em Rust: guia completo da biblioteca redis-rs
SFML para C++: guia completo com exemplos