Redis - NoSQL In-Memory
Redis (REmote DIctionary Server) est une base de données NoSQL qui stocke TOUT en RAM → ultra-rapide ! ⚡ Utilisée par Twitter, GitHub, StackOverflow pour du cache, sessions, leaderboards... 🚀
📦 Types de Données Redis
1. Strings (Chaînes)
Type le plus simple : clé → valeur
SET user:1000:name "Alice" GET user:1000:name → "Alice" INCR page:views → 1 INCR page:views → 2 (compteur automatique !)
2. Lists (Listes)
Liste ordonnée, parfaite pour files d'attente
LPUSH queue:jobs "job1" LPUSH queue:jobs "job2" RPOP queue:jobs → "job1" (FIFO: First In First Out)
3. Sets (Ensembles)
Collection unique non ordonnée
SADD tags:article:1 "php" "web" "tutorial" SMEMBERS tags:article:1 → ["php", "web", "tutorial"] SISMEMBER tags:article:1 "php" → 1 (true)
4. Hashes (Dictionnaires)
Objet avec champs (comme un JSON)
HSET user:1000 name "Alice" age 25 city "Paris"
HGET user:1000 name
→ "Alice"
HGETALL user:1000
→ {"name": "Alice", "age": "25", "city": "Paris"}
5. Sorted Sets (Ensembles Triés)
Set avec un score pour chaque élément (leaderboards !)
ZADD leaderboard 1000 "Alice" 850 "Bob" 950 "Charlie"
ZRANGE leaderboard 0 -1 WITHSCORES
→ [("Bob", 850), ("Charlie", 950), ("Alice", 1000)]
ZRANK leaderboard "Alice"
→ 2 (3ème position, index 2)
⏰ Expiration & TTL
Auto-Suppression des Clés
Redis peut supprimer automatiquement les clés après un certain temps !
SET session:abc123 "user_data" EX 3600 // Expire dans 3600 secondes (1h) TTL session:abc123 → 3594 (secondes restantes) EXPIRE session:abc123 7200 // Change l'expiration à 2h
🎯 Cas d'Usage
- 🔑 Sessions utilisateur : expire après 30 min d'inactivité
- 📧 Codes OTP : expire après 5 min
- 🎫 Tokens temporaires : expire après 1h
- 📦 Cache : expire après 10 min
🚀 Pourquoi Redis est Ultra-Rapide ?
En RAM
Toutes les données sont en mémoire vive (pas de disque) → accès en microsecondes !
Single-threaded
Un seul thread = pas de locks = ultra-rapide pour opérations simples
Structures Optimisées
Types de données optimisés en C pour la vitesse
Persistance Optionnelle
Peut sauvegarder sur disque périodiquement (RDB/AOF)