Client Redis pour PHP : Predis — installation, connexion, 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

Predis — un client Redis flexible pour PHP

\n\n

Redis est un magasin de données clé-valeur hautes performances, souvent utilisé pour la mise en cache, les sessions, les files d'attente et les applications en temps réel. Pour travailler avec Redis depuis PHP, il existe plusieurs bibliothèques, et l'une des plus populaires est Predis. Il s'agit d'une implémentation entièrement en PHP du client, ne nécessitant pas l'installation d'extensions supplémentaires (contrairement à phpredis). Predis prend en charge toutes les commandes Redis de base, le clustering, la réplication, Pub/Sub et le travail avec les transactions.

\n\n

Installation de Predis via Composer

\n\n

L'installation de Predis se fait de manière standard via Composer. Assurez-vous que Composer est installé dans votre projet et exécutez la commande :

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

Après l'installation, une dépendance apparaîtra dans le fichier composer.json et la bibliothèque sera disponible dans le dossier vendor.

\n\n

Connexion au serveur Redis

\n\n

Pour commencer, créez une instance du client Predis. Par défaut, il se connecte à 127.0.0.1:6379, mais vous pouvez spécifier vos propres paramètres.

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Predis\\Client;\n\n// Connexion avec les paramètres par défaut\n$client = new Client();\n\n// Ou avec spécification explicite de l'hôte et du port\n$client = new Client([\n    'scheme' => 'tcp',\n    'host'   => '127.0.0.1',\n    'port'   => 6379,\n]);\n\n// Si un mot de passe est requis\n$client = new Client([\n    'host' => 'localhost',\n    'port' => 6379,\n    'password' => 'my_secret_password',\n]);\n?>
\n\n

Si Redis est exécuté sur un serveur distant ou utilise un socket UNIX, modifiez simplement les paramètres correspondants.

\n\n

Opérations de base avec les données

\n\n

Predis prend en charge tous les types de données Redis standard : chaînes, hachages, listes, ensembles et ensembles triés. Examinons des exemples de base.

\n\n

Travail avec les chaînes

\n\n
<?php\n// Définir une valeur\n$client->set('user:100:name', 'Иван Петров');\n\n// Obtenir la valeur\n$name = $client->get('user:100:name');\necho $name; // Иван Петров\n\n// Vérifier l'existence d'une clé\nif ($client->exists('user:100:name')) {\n    echo 'La clé existe';\n}\n\n// Supprimer une clé\n$client->del(['user:100:name']);\n?>
\n\n

Travail avec les hachages

\n\n

Les hachages sont pratiques pour stocker des objets — par exemple, les données d'un utilisateur.

\n\n
<?php\n// Définir les champs d'un hachage\n$client->hmset('user:100', [\n    'name'  => 'Анна Смирнова',\n    'email' => 'anna@example.com',\n    'age'   => 28,\n]);\n\n// Obtenir un champ\n$email = $client->hget('user:100', 'email');\n\n// Obtenir tous les champs\n$userData = $client->hgetall('user:100');\nprint_r($userData);\n\n// Incrémenter un champ numérique\n$client->hincrby('user:100', 'age', 1);\n?>
\n\n

Travail avec les listes

\n\n

Les listes Redis sont idéales pour les files d'attente et les journaux.

\n\n
<?php\n// Ajouter des éléments au début de la liste (pile)\n$client->lpush('tasks', 'task1', 'task2', 'task3');\n\n// Ajouter à la fin de la liste (file d'attente)\n$client->rpush('tasks', 'task4');\n\n// Obtenir tous les éléments de la liste\n$allTasks = $client->lrange('tasks', 0, -1);\nprint_r($allTasks);\n\n// Extraire le premier élément\n$first = $client->lpop('tasks');\necho $first; // task3\n?>
\n\n

Définition de la durée de vie d'une clé (TTL)

\n\n

L'une des fonctionnalités puissantes de Redis est la suppression automatique des clés après un temps donné. Cela est souvent utilisé pour la mise en cache.

\n\n
<?php\n// Définir une clé avec un TTL de 60 secondes\n$client->setex('cache:page', 60, 'HTML-контент страницы');\n\n// Ou pour une clé déjà existante\n$client->expire('cache:page', 120);\n\n// Vérifier le temps restant avant expiration\n$ttl = $client->ttl('cache:page');\necho "Il reste $ttl secondes";\n?>
\n\n

Travail avec les transactions

\n\n

Predis prend en charge les multi-commandes (trans

Recommendations