Questions d'entretien Redis
1. Qu'est-ce que Redis et quels sont ses cas d'usage principaux ?
Redis est un store de donnees en memoire open source, utilise comme base de donnees, cache et broker de messages. Ses cas d'usage principaux : cache applicatif (le plus courant, pour accelerer les requetes), sessions utilisateur, compteurs en temps reel (vues, likes), files d'attente (avec les listes ou Streams), pub/sub (messagerie temps reel), leaderboards (avec les sorted sets), et rate limiting. Redis est extremement rapide car toutes les operations se font en memoire.
2. Quelles sont les structures de donnees de Redis ?
Redis offre des structures de donnees riches : String (valeurs simples, compteurs avec INCR), List (liste doublement chainee, LPUSH/RPOP pour les files), Set (ensemble unique, operations ensemblistes SUNION/SINTER), Sorted Set (ensemble ordonne par score, ideal pour les classements), Hash (table de hachage, parfait pour les objets), Stream (log append-only pour l'event streaming), Bitmap (operations bit a bit), HyperLogLog (estimation de cardinalite).
3. Expliquez les strategies d'eviction de Redis.
Quand Redis atteint la limite de memoire (maxmemory), il doit supprimer des cles. Strategies : noeviction (retourne une erreur), allkeys-lru (supprime la cle la moins recemment utilisee parmi toutes), volatile-lru (LRU parmi les cles avec un TTL), allkeys-lfu (supprime la cle la moins frequemment utilisee), volatile-ttl (supprime la cle avec le TTL le plus court). Pour un cache, allkeys-lru ou allkeys-lfu sont recommandes.
4. Comment fonctionne la persistance dans Redis ?
Deux mecanismes : RDB (Redis Database) cree des snapshots periodiques du dataset en memoire vers un fichier binaire. Rapide au redemarrage mais risque de perte des donnees entre snapshots. AOF (Append Only File) enregistre chaque operation d'ecriture dans un log. Plus durable mais fichier plus volumineux. On peut combiner les deux : AOF pour la durabilite et RDB pour les sauvegardes rapides. Depuis Redis 7, le mode AOF multi-part ameliore les performances.
5. Qu'est-ce que Redis Cluster et comment fonctionne-t-il ?
Redis Cluster distribue automatiquement les donnees sur plusieurs noeuds Redis. Les donnees sont partitionnees en 16384 hash slots. Chaque noeud possede un sous-ensemble de slots. Le client calcule le slot d'une cle avec CRC16(key) % 16384 et contacte le bon noeud. Si le noeud est incorrect, il recoit une redirection (MOVED). Chaque noeud master a des replicas pour la haute disponibilite. Le failover est automatique.
6. Expliquez le pattern cache-aside (lazy loading).
Le pattern cache-aside : l'application verifie d'abord si la donnee est dans le cache Redis. Si oui (cache hit), elle la retourne. Si non (cache miss), elle lit la base de donnees, stocke le resultat dans le cache avec un TTL, et retourne la donnee. Avantages : seules les donnees demandees sont mises en cache, pas de donnees inutiles. Inconvenient : le premier acces est toujours lent (cold start). Variante : write-through ecrit dans le cache a chaque ecriture en base.
7. Comment implementer un rate limiter avec Redis ?
Deux approches courantes. Fenetre fixe : utilisez INCR sur une cle avec le timestamp comme suffixe (rate:user:202605271400) et EXPIRE pour le TTL de la fenetre. Token bucket : utilisez un sorted set avec les timestamps des requetes, ZADD pour ajouter et ZRANGEBYSCORE pour compter les requetes dans la fenetre glissante. Redis est ideal pour le rate limiting grace a sa rapidite et ses operations atomiques.
8. Qu'est-ce que les Streams Redis et comment les utiliser ?
Les Redis Streams (depuis Redis 5) sont des structures de donnees de type log append-only, similaires a Apache Kafka. Chaque entree a un ID unique (timestamp + sequence). Les consumer groups permettent a plusieurs consommateurs de lire les memes donnees de maniere coordonnee. Commandes cles : XADD (ajouter), XREAD (lire), XREADGROUP (lire en groupe), XACK (acquitter). Cas d'usage : pipelines d'evenements, messaging, ingestion de donnees temps reel.
9. Comment securiser Redis en production ?
Redis n'est pas concu pour etre expose sur Internet. Bonnes pratiques : configurer un mot de passe (requirepass), bind sur l'interface locale uniquement, utiliser un firewall pour limiter l'acces, activer TLS pour le chiffrement en transit, renommer les commandes dangereuses (FLUSHALL, CONFIG), utiliser les ACL (Access Control Lists depuis Redis 6) pour des permissions granulaires, et toujours tourner la derniere version stable.
10. Comment monitorer Redis en production ?
Commandes utiles : INFO (statistiques detaillees : memoire, CPU, clients, replication), MONITOR (affiche toutes les commandes en temps reel — attention en production), SLOWLOG (requetes lentes), LATENCY (diagnostic de latence). Metriques cles a surveiller : utilisation memoire (used_memory vs maxmemory), taux de hit/miss (keyspace_hits/misses), clients connectes, operations par seconde (instantaneous_ops_per_sec). Exportez vers Prometheus avec redis_exporter.