Dans une architecture web moderne, la rapidité d’accès aux données n’est plus un avantage concurrentiel : c’est un prérequis. Chaque milliseconde de latence se traduit par une dégradation de l’expérience utilisateur, et les bases de données relationnelles classiques peinent à suivre le rythme lorsque les volumes augmentent. C’est précisément le vide que Redis vient combler. Magasin de structures de données en mémoire, Redis s’est imposé comme l’outil de référence pour la mise en cache, la gestion de sessions et les files d’attente en temps réel. Ce guide vous propose une prise en main progressive, de l’installation aux bonnes pratiques de production.
Qu’est-ce que Redis et pourquoi l’utiliser ?
Redis — Remote Dictionary Server — est un magasin de données clé-valeur en mémoire, développé en C. Contrairement à une base de données relationnelle qui écrit sur disque pour chaque opération, Redis travaille entièrement en RAM, ce qui lui confère des performances de l’ordre de la microseconde par opération. Publié sous licence BSD, il est utilisé par des entreprises comme Twitter, GitHub ou Stack Overflow pour gérer des centaines de milliers de requêtes par seconde.
Son modèle de données ne se limite pas aux simples chaînes de caractères. Redis prend en charge les listes, les ensembles, les dictionnaires (hashes), les ensembles triés et bien d’autres structures. Cette richesse permet de résoudre des problèmes variés sans avoir à implémenter de logique applicative complexe côté serveur. Vous pouvez par exemple utiliser une liste pour une file d’attente de tâches, un ensemble trié pour un classement en temps réel, ou un hash pour stocker les données d’une session utilisateur.
Le principal cas d’usage reste toutefois le cache applicatif. En plaçant Redis entre votre base de données et vos endpoints API, vous réduisez considérablement le temps de réponse des requêtes répétitives — les profils utilisateurs, les catalogues de produits, les listes d’articles — sans avoir à modifier votre logique métier.
Installer et configurer Redis
L’installation de Redis est d’une simplicité déconcertante. Sur une distribution Linux récente, deux commandes suffisent :
sudo apt update
sudo apt install redis-serverRedis supporte également une installation via Docker, particulièrement adaptée au développement :
docker run -d --name redis-stack -p 6379:6379 redis/redis-stack-server:latestUne fois le service démarré, vous pouvez vérifier son bon fonctionnement avec la commande ping :
redis-cli ping
# Réponse : PONGPar défaut, Redis écoute sur le port 6379 en localhost. Pour un déploiement en production, quelques ajustements de configuration sont nécessaires : activer un mot de passe via le paramètre requirepass dans le fichier /etc/redis/redis.conf, désactiver la commande FLUSHALL en production, et configurer la persistance RDB ou AOF selon vos besoins de durabilité.
Les commandes essentielles de Redis
Redis expose un vocabulaire de commandes concis mais puissant. En voici les plus courantes :
| Commande | Description | Exemple |
|---|---|---|
SET | Stocke une valeur associée à une clé | SET user:42 "Jean Dupont" |
GET | Récupère la valeur d’une clé | GET user:42 |
DEL | Supprime une ou plusieurs clés | DEL user:42 |
EXPIRE | Définit une durée de vie en secondes | EXPIRE session:abc 3600 |
TTL | Consulte le temps restant avant expiration | TTL session:abc |
LPUSH | Ajoute un élément en tête de liste | LPUSH tasks "send-email" |
LRANGE | Extrait une plage d’éléments d’une liste | LRANGE tasks 0 -1 |
HSET | Ajoute un champ dans un hash | HSET user:42 name "Jean" |
HGETALL | Récupère tous les champs d’un hash | HGETALL user:42 |
Ces commandes vous couvriront 90 % des cas d’usage quotidiens. La documentation officielle de Redis est également l’une des mieux tenues de l’écosystème open source : chaque commande dispose d’une page dédiée avec exemples et complexité algorithmique.
Utiliser Redis avec votre application
L’intégration de Redis dans une application existante est immédiate grâce aux clients officiels disponibles dans tous les langages majeurs. Voici un exemple en Python avec la bibliothèque redis-py :
import redis
r = redis.Redis(host="localhost", port=6379, decode_responses=True)
r.set("visitor_count", 1)
count = int(r.get("visitor_count"))
print(f"Visiteurs : {count}")Et son équivalent en Node.js avec ioredis :
const Redis = require("ioredis");
const redis = new Redis();
await redis.set("visitor_count", "1");
const count = await redis.get("visitor_count");
console.log(`Visiteurs : ${count}`);Dans une architecture de cache, le pattern le plus répandu est le « cache-aside » : l’application interroge Redis en premier lieu. Si la donnée n’est pas présente (miss), elle interroge la base de données relationnelle, stocke le résultat dans Redis avec une durée de vie, puis le retourne au client.
Gérer le cycle de vie des clés
L’un des aspects les plus négligés par les débutants est la gestion de l’expiration des clés. Sans EXPIRE, une clé reste en mémoire indéfiniment, ce qui conduit inévitablement à un épuisement de la RAM disponible. Redis propose plusieurs stratégies d’éviction automatique une fois la mémoire saturée : allkeys-lru supprime les clés les moins récemment utilisées, tandis que volatile-lru ne concerne que celles ayant une durée de vie définie.
En pratique, la quasi-totalité de vos clés devraient posséder une durée de vie. Pour les caches de contenu, une durée de 300 à 900 secondes est un bon point de départ. Pour les sessions utilisateur, 24 heures sont généralement suffisantes. Pour les files d’attente, le paramétrage dépend du temps d’exécution maximal de vos tâches.
Redis propose également deux mécanismes de persistance sur disque : RDB (snapshots périodiques) et AOF (journalisation des opérations). En production, une combinaison des deux est recommandée pour équilibrer performances et sécurité des données.
Bonnes pratiques pour Redis en production
Plusieurs erreurs récurrentes méritent d’être signalées. La première est d’utiliser Redis comme base de données primaire. Si Redis excelle pour le cache et les données transitoires, il ne remplace pas une base relationnelle pour la persistance durable, les requêtes complexes ou l’intégrité référentielle. La bonne pratique consiste à utiliser Redis comme une couche d’accélération devant une base de données traditionnelle.
Deuxième erreur commune : ne pas configurer la limite de mémoire maximale. Le paramètre maxmemory dans redis.conf définit un plafond au-delà duquel les stratégies d’éviction s’appliquent. Sans cette limite, Redis peut consommer toute la RAM disponible du serveur et provoquer un crash.
Enfin, la sécurité est souvent oubliée. Redis ne chiffre pas les connexions par défaut. En production, il est impératif d’activer TLS, d’utiliser un mot de passe robuste (requirepass) et de ne jamais exposer le port 6379 directement sur Internet. Un proxy comme stunnel ou une configuration réseau restrictive sont les solutions les plus courantes.
Questions fréquentes sur Redis
Redis est-il gratuit ?
Oui. Redis est publié sous licence BSD, ce qui permet une utilisation libre, y compris commerciale, sans restriction. Des versions commerciales avec support existent (Redis Enterprise), mais la version open source est parfaitement adaptée à la grande majorité des projets.
Quelle est la différence entre Redis et Memcached ?
Les deux sont des magasins de cache en mémoire, mais Redis se distingue par la richesse de ses structures de données (listes, ensembles, hashes), sa persistance optionnelle sur disque, et ses fonctionnalités avancées comme la réplication, la publication-abonnement et les transactions. Memcached est plus simple et légèrement plus rapide pour des opérations clé-valeur basiques, mais Redis offre une polyvalence bien supérieure.
Redis peut-il remplacer PostgreSQL ?
Non, dans la grande majorité des cas. Redis ne gère pas les contraintes d’intégrité, les jointures, les index secondaires avancés ou les transactions complexes. Son rôle est complémentaire : il accélère les accès aux données fréquemment consultées tandis que PostgreSQL assure le stockage fiable et la cohérence transactionnelle.