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 7·20 min

Déploiement et production

Un Redis exposé sans mot de passe sur internet est une catastrophe. Ce chapitre couvre la configuration minimale pour un déploiement sécurisé, le monitoring, et les bonnes pratiques mémoire.

Docker Compose

docker-compose.yml
services:
  redis:
    image: redis:7-alpine
    container_name: redis
    restart: unless-stopped
    command: redis-server /etc/redis/redis.conf
    volumes:
      - ./redis.conf:/etc/redis/redis.conf:ro
      - redis_data:/data
    ports:
      - "127.0.0.1:6379:6379"   # uniquement localhost — pas exposé publiquement
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 3
 
volumes:
  redis_data:

127.0.0.1:6379 — Redis n'écoute que sur l'interface loopback. Les connexions externes sont impossibles. C'est la configuration minimale de sécurité.

redis.conf de production

redis.conf
# Mot de passe obligatoire
requirepass votre-mot-de-passe-long-et-aléatoire
 
# Désactiver les commandes dangereuses
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command DEBUG ""
rename-command KEYS ""
 
# Mémoire maximale (adapter à votre serveur)
maxmemory 512mb
 
# Politique d'éviction quand la mémoire est pleine
maxmemory-policy allkeys-lru
 
# Persistance (RDB + AOF)
save 3600 1
save 300 10
appendonly yes
appendfsync everysec
 
# Logs
loglevel notice
logfile /data/redis.log

Politiques d'éviction

PolitiqueComportement
noevictionErreur si mémoire pleine (défaut)
allkeys-lruSupprime les clés les moins récemment utilisées
allkeys-lfuSupprime les clés les moins fréquemment utilisées
volatile-lruLRU uniquement sur les clés avec TTL
volatile-ttlSupprime en priorité les clés qui expirent bientôt

Pour un cache : allkeys-lru. Pour des données mixtes (cache + persistant) : volatile-lru.

Variable d'environnement

.env
REDIS_URL=redis://:votre-mot-de-passe@127.0.0.1:6379

Dans ioredis :

const redis = new Redis(process.env.REDIS_URL)

Monitoring

Commandes de diagnostic

# Stats globales en temps réel
redis-cli -a MOT_DE_PASSE info all
 
# Surveiller toutes les commandes en temps réel (dev seulement)
redis-cli -a MOT_DE_PASSE monitor
 
# Identifier les clés qui occupent le plus de mémoire
redis-cli -a MOT_DE_PASSE memory usage nom:de:la:clé
 
# Analyser la distribution des types et des tailles
redis-cli -a MOT_DE_PASSE --bigkeys
 
# Latence
redis-cli -a MOT_DE_PASSE --latency
redis-cli -a MOT_DE_PASSE --latency-history

Métriques importantes à surveiller

redis-cli info stats | grep -E "total_commands_processed|rejected_connections|keyspace_hits|keyspace_misses"
redis-cli info memory | grep -E "used_memory_human|maxmemory_human|mem_fragmentation_ratio"
redis-cli info clients | grep connected_clients
MétriqueSeuil d'alerte
used_memory / maxmemory> 80%
keyspace_hit_ratio< 90% (cache peu efficace)
mem_fragmentation_ratio> 1.5 (fragmentation excessive)
connected_clientsselon votre pool de connexions
rejected_connections> 0 (pool saturé)

Hit ratio

redis-cli info stats | grep keyspace
# keyspace_hits:15234
# keyspace_misses:892

Hit ratio = hits / (hits + misses). En dessous de 90%, votre cache est mal configuré (TTL trop court, mauvaise stratégie de clés, eviction trop agressive).

Sauvegardes

# Déclencher un snapshot manuellement
redis-cli -a MOT_DE_PASSE BGSAVE
 
# Copier le fichier dump.rdb
docker cp redis:/data/dump.rdb ./backup/dump-$(date +%Y%m%d).rdb

Pour les sauvegardes automatiques, un cron qui copie dump.rdb vers S3 ou un stockage distant toutes les heures est suffisant dans la plupart des cas.

Checklist déploiement

  • Mot de passe défini dans requirepass
  • Port non exposé publiquement (127.0.0.1:6379, pas 0.0.0.0:6379)
  • FLUSHALL et CONFIG renommés ou désactivés
  • maxmemory défini avec politique d'éviction
  • Persistance configurée (RDB + AOF)
  • Volume Docker pour /data
  • Healthcheck sur le container
  • Monitoring du hit ratio et de l'utilisation mémoire

Redis est maintenant configuré pour la production. Pour aller plus loin sur les cas d'usage comme le cache de sessions et les files d'attente dans un contexte Node.js complet, l'article Redis : cache, sessions et files d'attente couvre ces patterns avec des exemples applicatifs concrets.

Précédent
Intégration Node.js avec ioredis

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