Client Redis pour PHP : Predis et PhpRedis
Redis est un magasin de données clé-valeur hautes performances fonctionnant en mémoire vive. Pour interagir avec Redis depuis PHP, il existe deux approches principales : la bibliothèque PHP pure Predis et l'extension native PhpRedis. Dans cet article, nous allons détailler ces deux outils, leur installation, les commandes de base et des exemples pratiques d'utilisation.
1. Predis – Client Redis en PHP pur
Predis est une bibliothèque entièrement écrite en PHP qui ne nécessite pas l'installation d'extensions supplémentaires. Elle est idéale pour les environnements où il n'est pas possible de compiler des extensions C.
Installation via Composer
composer require predis/predisConnexion de base et exemples
require 'vendor/autoload.php';
use Predis\\Client;
// Connexion par défaut (localhost:6379)$redis = new Client();
// Alternative avec paramètres explicites$redis = new Client([ 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379, 'password' => 'secret', // si défini]);
// Travail avec des chaînes simples$redis->set('user:1:name', 'Alexei');echo $redis->get('user:1:name'); // Alexei
// Travail avec des listes$redis->rpush('queue:tasks', 'task1', 'task2', 'task3');$task = $redis->lpop('queue:tasks'); // task1
// Travail avec des hachages$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']Mise en cache avec TTL (durée de vie)
// Sauvegarder les données pour 1 heure (3600 secondes)$redis->setex('weather:spb', 3600, '{"temp": 15, "humidity": 70}');
// Vérifier si la clé existeif ($redis->exists('weather:spb')) { echo $redis->get('weather:spb');} else { // Requête vers une API externe et sauvegarde $data = json_encode(['temp' => 15, 'humidity' => 70]); $redis->setex('weather:spb', 3600, $data);}Files d'attente de tâches (listes)
// Ajouter une tâche à la file d'attente$redis->rpush('email:queue', json_encode([ 'to' => 'user@example.com', 'subject' => 'Salutation', 'body' => 'Bienvenue !']));
// Worker : récupérer une tâche (mode bloquant)while (true) { $taskRaw = $redis->blpop('email:queue', 5); // timeout de 5 secondes if ($taskRaw) { $task = json_decode($taskRaw[1], true); sendEmail($task['to'], $task['subject'], $task['body']); }}2. PhpRedis – Extension C native
PhpRedis est une extension pour PHP écrite en C. Elle fonctionne beaucoup plus rapidement que Predis grâce à des frais généraux minimaux. Nécessite une installation via PECL ou une compilation.
Installation
# Via PECL (recommandé)pecl install redis
# Ou manuellement (Linux)git clone https://github.com/phpredis/phpredis.gitcd phpredisphpize./configuremake && make install# Ajouter extension=redis.so dans php.iniExemples d'utilisation
// Connexion$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->auth('password'); // si un mot de passe est défini
// Set / Get$redis->set('counter', 1);$redis->incr('counter');echo $redis->get('counter'); // 2
// Travail avec des ensembles$redis->sadd('users:online', 'user1', 'user2', 'user3');$onlineCount = $redis->scard('users:online'); // 3$isOnline = $redis->sismember('users:online', 'user2'); // true
// Pub/Sub (éditeur)$redis->publish('channel:news', 'Nouveau message !');
// Pub/Sub (abonné – script séparé)$redis->subscribe(['channel:news'], function ($redis, $channel, $message) { echo "Reçu de $channel : $message";});Mise en cache de structures complexes
// Mettre en cache le résultat d'une requête SQL$cacheKey = 'articles:l Aussi dans la bibliothèque
GraphQL Java — bibliothèque serveur pour implémenter une API GraphQL en Java
Cryptographie en C++ : chiffrement et hachage avec OpenSSL et Crypto++
Surveillance des applications Java : outils et bonnes pratiques
Cryptographie en Java : chiffrement et hachage des données