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.