Intégration et Utilisation de Redis dans Laravel

Laravel intègre nativement la prise en charge de Redis, nécessitant principalement une configuration adéquate. Il est crucial de vérifier l'espace de noms correct dans le tableau aliases du fichier config/app.php.

1. Installasion et Démarrage de Redis et Dépendances

Si vous utilisez la machine virtuelle Homestead pour votre développement local, Redis est déjà préinstallé et démarré. Pour les environnements sous Windows, suivez cet article pour installer et démarrer Redis.

Une fois Redis lancé, installez la dépendance predis dans votre projet Laravel via Composer :

composer require predis/predis 1.0.*

2. Configuration de Redis

La configuration de Redis se trouve dans config/database.php, permettant son utilisation comme base de données principale :


'redis' => [
 'cluster' => false,
 'default' => [
   'host' => '127.0.0.1',
   'port' => 6379,
   'database' => 0,
 ],
],
   

L'option cluster détermine si Redis utilise le sharding sur plusieurs nœuds ; elle est réglée sur false pour un environnement de test local à un seul nœud.

La configuraton default spécifie les détails de connexion pour l'instance Redis par défaut. Ici, Redis et le serveur web partagent la même machine, d'où host défini à 127.0.0.1, avec le port par défaut de Redis étant 6379.

D'autres paramètres de connexion sont disponibles pour l'option default :

Paramètre Signification Valeur par défaut
host Adresse IP/Nom d'hôte du serveur 127.0.0.1
port Port d'écoute du serveur Redis 6379
password Mot de passe d'authentification si requis Aucun
database Index de la base de données à utiliser Non spécifié
timeout Délai d'attente pour la connexion au serveur Redis 5 secondes
read_write_timeout Délai d'attente pour les opérations de lecture/écriture réseau Système par défaut (-1 pour illimité)

Si Redis est utilisé comme outil de mise en cache, une configuration supplémentaire est nécessaire dans config/cache.php :


'redis' => [
   'driver' => 'redis',
   'connection' => 'default',
],
   

Ici, connection fait référence à la configuration default dans config/database.

Une fois ces configurations appliquées, vous pouvez commencer à interagir avec Redis dans votre application.

3. Utilisation Basique

Le Facade Redis est automatiquement enregistré dans le tableau aliases de config/app.php. Vous pouvez donc l'utiliser directement dans votre code.

Ce Facade permet d'appeler n'importe quelle commande du client Redis via des méthodes statiques. Laravel transmet ces commandes au serveur Redis et retourne le résultat obtenu.

Voici un exemple simple d'opération de lecture/écriture :


$userId = 6;
$userKey = "user:name:{$userId}";
$user = User::find($userId);

if ($user) {
   // Stocke le nom de l'utilisateur dans Redis
   Redis::set($userKey, $user->name);
}

// Vérifie l'existence de la clé
if (Redis::exists($userKey)) {
   // Récupère la valeur associée à la clé
   dd(Redis::get($userKey));
}
   

Pour des structures de données plus complexes, comme les ensembles (sets), voici un exemple :


$postsKey = 'posts:titles';
$allPosts = Post::all();

foreach ($allPosts as $post) {
   // Ajoute le titre de chaque article à un ensemble Redis
   Redis::sadd($postsKey, $post->title);
}

// Récupère le nombre total d'éléments dans l'ensemble
$numberOfPosts = Redis::scard($postsKey);

if ($numberOfPosts > 0) {
   // Extrait trois titres aléatoires de l'ensemble
   $randomPostTitles = Redis::srandmember($postsKey, 3);
   dd($randomPostTitles);
}
   

Notez que les ensembles (sets) se distinguent des listes par leur impossibilité de contenir des doublons, reflétant la propriété d'unicité des ensembles mathématiques. Les ensembles ordonnés (sorted sets), quant à eux, maintiennent un ordre, contrairement aux ensembles mathématiques classiques.

Étiquettes: Laravel Redis predis Cache base de données

Publié le 2 juillet à 16h57