Client Redis pour PHP : Predis et PhpRedis – connexion et exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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/predis


Connexion 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.ini


Exemples 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                    

Recommendations