Redis

Découvrez Redis, un magasin de structure de données en mémoire utilisé comme base de données, cache et courtier de messages.

Qu'est-ce que Redis ?

Redis (Remote Dictionary Server) est un magasin de structure de données en mémoire, utilisé comme base de données, cache, et courtier de messages. Il supporte des structures de données telles que les chaînes, les hachages, les listes, les ensembles, les ensembles triés avec des requêtes de gamme, les bitmaps, les hyperloglogs, les index géospatiaux et les flux.

Points clés - Performance Élevée: Redis stocke l'ensemble des données en mémoire RAM, offrant ainsi une performance très élevée pour les opérations de lecture et d'écriture. - Modèle Clé-Valeur: Redis est basé sur un modèle simple de clé-valeur, ce qui le rend facile à utiliser et flexible pour stocker une variété de structures de données. - Persistance des Données: Bien que principalement en mémoire, Redis offre des options pour persister les données sur disque, ce qui permet une récupération après un redémarrage. - Extensibilité: Redis peut fonctionner en mode cluster, offrant une haute disponibilité et une répartition de charge.

Connexion à Redis en PHP avec Predis

Installation de Predis via Composer

Pour utiliser Redis en PHP, Predis, un client Redis flexible et riche en fonctionnalités, est souvent utilisé. Installez-le via Composer :

composer require predis/predis

Exemple de Connexion

require 'vendor/autoload.php';

$client = new Predis\Client([
    'scheme' => 'tcp',
    'host'   => 'localhost',
    'port'   => 6379,
]);

// Tester la connexion
echo $client->ping();

Gestion d'une File d'Attente avec Verrouillage

Exemple de Script PHP

// Créer une tâche dans la file d'attente
$client->lpush("queue", json_encode(["task" => "task1"]));

// Worker pour traiter les tâches
while (true) {
    $task = $client->rpop("queue");
    if ($task) {
        $taskData = json_decode($task, true);
        $lockKey = "lock:" . $taskData["task"];

        if (!$client->exists($lockKey)) {
            $client->set($lockKey, "locked");
            // Traiter la tâche
            // ...
            $client->del($lockKey);
        }
    }
    sleep(1);
}

Ajout de Redis dans Docker-Compose avec Persistance AOF

Configuration Docker-Compose

version: '3'

services:
  mon-application:
    build: .
    depends_on:
      - redis

  redis:
    image: redis:latest
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data

volumes:
  redis_data:
Points d’attention - Utilisez le **nom du service** (**`redis`** dans ce cas) pour vous connecter à Redis depuis d'autres services dans le même **`docker-compose`**. - Les données de Redis sont stockées de manière persistante dans le volume `redis_data`.

Commandes Utiles Redis

Commandes de Base

  • SET key value: Définir une valeur pour une clé.
  • GET key: Obtenir la valeur d'une clé.
  • DEL key: Supprimer une clé et sa valeur.
  • LPUSH key value: Ajouter une valeur au début d'une liste.
  • RPOP key: Supprimer et obtenir le dernier élément d'une liste.

Commandes Avancées

  • ZADD key score member: Ajouter un membre à un ensemble trié.
  • ZRANGE key start stop: Obtenir une gamme de membres dans un ensemble trié.
  • HSET key field value: Définir la valeur d'un champ dans un hachage.
  • HGET key field: Obtenir la valeur d'un champ dans un hachage.

Conclusion

Cette documentation fournit un aperçu complet de Redis, de son utilisation en PHP avec Predis, de la gestion d'une file d'attente avec verrouillage, de l'intégration de Redis dans Docker avec persistance, et des commandes utiles. Redis est un outil puissant pour gérer des données en mémoire avec une grande vitesse et flexibilité, et s'intègre bien dans les architectures modernes d'applications web.