iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
Formations
Bash / Node.js · Débutant

Redis

Maîtriser Redis de zéro : types de données, commandes essentielles, expiration, persistance, cas d'usage réels (cache, sessions, files d'attente) et intégration Node.js.

Redis 7Node.jsioredisDocker
01Introduction et installation02Types de données03Commandes essentielles04Expiration et persistance05Cas d'usage pratiques06Intégration Node.js avec ioredis07Déploiement et production
Chapitre 2·25 min

Types de données

Redis n'est pas un simple magasin clé → chaîne. Il supporte plusieurs structures de données natives, chacune avec ses propres commandes et cas d'usage. Choisir le bon type, c'est la moitié du travail.

String

Le type le plus simple. Une clé pointe vers une valeur : texte, nombre, JSON sérialisé, binaire. Limite : 512 Mo par valeur.

SET user:42:name "Alice"
GET user:42:name
# "Alice"
 
# Incrémenter un compteur atomiquement
SET page:views 0
INCR page:views
# (integer) 1
INCRBY page:views 10
# (integer) 11
DECR page:views
# (integer) 10
 
# Stocker du JSON
SET session:abc123 '{"userId":42,"role":"admin"}'
GET session:abc123

INCR / DECR sont atomiques — pas de race condition même avec des milliers de clients simultanés.

List

Liste ordonnée d'éléments, accessible depuis les deux extrémités. Implémentée comme une linked list : insertion en tête/queue en O(1), accès par index en O(n).

# Ajouter à gauche (head)
LPUSH notifications:user:42 "Nouveau commentaire"
LPUSH notifications:user:42 "Nouveau follower"
 
# Lire les N premiers éléments
LRANGE notifications:user:42 0 9
# 1) "Nouveau follower"
# 2) "Nouveau commentaire"
 
# Taille de la liste
LLEN notifications:user:42
# (integer) 2
 
# Retirer et retourner le dernier élément (pour les files d'attente)
RPOP notifications:user:42
# "Nouveau commentaire"

Cas d'usage typiques : files d'attente de tâches, timelines, logs récents.

Hash

Collection de paires champ → valeur sous une clé. L'équivalent d'un objet ou d'une ligne de base de données.

# Stocker un utilisateur
HSET user:42 name "Alice" email "alice@example.com" role "admin"
 
# Lire un champ
HGET user:42 name
# "Alice"
 
# Lire tous les champs
HGETALL user:42
# 1) "name"
# 2) "Alice"
# 3) "email"
# 4) "alice@example.com"
# 5) "role"
# 6) "admin"
 
# Incrémenter un champ numérique
HINCRBY user:42 login_count 1
 
# Vérifier si un champ existe
HEXISTS user:42 email
# (integer) 1

Avantage vs JSON sérialisé : vous pouvez lire ou modifier un seul champ sans désérialiser tout l'objet.

Set

Collection non ordonnée de membres uniques. Pas de doublons, pas d'ordre garanti. Opérations ensemblistes (union, intersection, différence) natives.

# Ajouter des membres
SADD article:1:tags "redis" "database" "performance"
SADD article:2:tags "redis" "nodejs" "cache"
 
# Vérifier l'appartenance
SISMEMBER article:1:tags "redis"
# (integer) 1
 
# Lister tous les membres
SMEMBERS article:1:tags
# 1) "redis"
# 2) "database"
# 3) "performance"
 
# Intersection — tags communs entre deux articles
SINTER article:1:tags article:2:tags
# 1) "redis"
 
# Union
SUNION article:1:tags article:2:tags

Cas d'usage typiques : tags, liste d'IDs uniques (utilisateurs en ligne), "qui a vu cet article".

Sorted Set (ZSet)

Comme un Set, mais chaque membre a un score numérique. Les membres sont ordonnés par score, du plus petit au plus grand. Accès par rang ou par plage de scores en O(log n).

# Ajouter avec score
ZADD leaderboard 1500 "alice"
ZADD leaderboard 2300 "bob"
ZADD leaderboard 1800 "charlie"
 
# Top 3 (ordre décroissant)
ZREVRANGE leaderboard 0 2 WITHSCORES
# 1) "bob"
# 2) "2300"
# 3) "charlie"
# 4) "1800"
# 5) "alice"
# 6) "1500"
 
# Rang d'un joueur (0-based, ordre croissant)
ZRANK leaderboard "alice"
# (integer) 0
 
# Score d'un joueur
ZSCORE leaderboard "bob"
# "2300"

Cas d'usage typiques : classements, rate limiting par fenêtre glissante, tâches planifiées (score = timestamp d'exécution).

Choisir le bon type

BesoinType
Valeur simple, compteur, JSONString
File d'attente, timelineList
Objet avec plusieurs champsHash
Collection unique, tagsSet
Classement, tri par scoreSorted Set

Les types sont en place. Le chapitre suivant couvre les commandes transversales (TTL, scan, type) et les patterns de nommage des clés.

Précédent
Introduction et installation
Suivant
Commandes essentielles

Développeur fullstack passionné. J'apprends en construisant et je documente tout — front, back, outils. Le code s'apprend mieux en public.

Naviguer

IndexTous les articlesFormationsProfilOutilsBibliothech

Ailleurs

GitHub RSS

Newsletter

Les articles, libs et découvertes. Une fois par semaine, pas plus.

© 2026 William LoreeConçu & codé à la main