Guide complet Redis sous Docker : persistance et authentification par mot de passe

Enfin, le conteneur Redis tourne. Vous testez quelques interfaces, lecture/écriture OK. Le lendemain, vous ouvrez l’ordinateur pour vérifier l’état du service — toutes les données ont disparu. Coup au cœur.
Vous avez peut-être déjà vécu ça : après un redémarrage Docker, les données Redis semblent n’avoir jamais existé. Sessions utilisateur perdues, paniers vidés, cache effacé. Pire encore, on ne sait pas pourquoi ni comment y remédier.
Franchement, la première fois que ça m’est arrivé, j’étais paniqué. Petit projet, données de test envolées — pas la prod, mais cette impuissance dérange. On comprend ensuite que le conteneur est « temporaire » par nature : le supprimer efface les données ; le redémarrer sans persistance, c’est pareil.
Cet article vous guide pas à pas pour :
- Configurer la persistance RDB et AOF, afin que Redis ne perde pas les données au redémarrage du conteneur
- Activer l’authentification par mot de passe, pour éviter un accès non autorisé (des Redis sans mot de passe ont déjà servi au minage par des pirates)
- Monter un fichier de configuration, pour un déploiement Redis normé et maintenable
- Les bonnes pratiques production : journaux, healthcheck, optimisation des performances
Que vous soyez développeur backend, ingénieur DevOps ou débutant Docker, en suivant ce guide vous déployez un conteneur Redis de niveau production.
Pourquoi un conteneur Redis perd-il des données ?
Analogie : un conteneur Docker, c’est comme une chambre d’hôtel — au check-out, tout est vidé. Idem pour le conteneur : supprimez-le, les données partent.
Par défaut, Redis stocke sur le système de fichiers interne au conteneur. Les écritures vont vers /data/dump.rdb ou /data/appendonly.aof. Problème : ces chemins sont dans le conteneur. Suppression ou recréation du conteneur, et les fichiers disparaissent.
Cas réel : une startup déploie Redis en test sans persistance. Redémarrage serveur, toutes les sessions perdues, paniers vides. Même en test, l’équipe a compris que la conteneurisation impose la persistance des données.
Environ 70 % des pertes de données Redis sous Docker viennent d’une persistance non configurée. Ce piège, presque tout le monde le prend une fois.
Rôle du Volume Docker
Le Volume (data volume), c’est la clé : comme sauvegarder sur le cloud plutôt que sur le disque local du PC.
Avec -v, vous montez un répertoire hôte dans le conteneur : les données vivent sur l’hôte. Conteneur supprimé, données intactes ; redémarrage, relecture possible. D’où l’obligation en production de monter un volume de données.
En bref :
- Sans volume = données dans le conteneur = suppression = perte
- Avec volume = données sur l’hôte = conteneur supprimé, données conservées
Déploiement rapide d’un Redis de base
Avant la persistance, déployons le conteneur le plus simple pour voir concrètement l’absence de persistance.
Démarrer le conteneur de base
Dans le terminal :
docker run -d --name redis-basic -p 6379:6379 redis:latest
Signification :
-d: arrière-plan--name redis-basic: nom du conteneur-p 6379:6379: mappe le port 6379 du conteneur sur l’hôteredis:latest: image Redis la plus récente
Docker tire l’image si besoin, puis démarre le conteneur.
Vérifier que le conteneur fonctionne
docker ps
Si redis-basic est en Up, tout va bien.
Test lecture/écriture :
docker exec -it redis-basic redis-cli
Dans redis-cli :
set test "hello"
get test
Si la réponse est "hello", Redis répond correctement.
Limites de cette version minimale
Trois problèmes majeurs :
- Pas de persistance : redémarrage = données perdues
- Pas de mot de passe : n’importe qui peut se connecter
- Configuration par défaut : pas de limite mémoire ni de stratégie de persistance personnalisée
Testez après redémarrage :
docker restart redis-basic
docker exec -it redis-basic redis-cli
get test
La clé test a souvent disparu — effet d’une persistance non configurée.
Configurer la persistance RDB (instantanés)
Redis propose RDB et AOF. Commençons par RDB, plus simple pour débuter.
Qu’est-ce que le RDB ?
RDB signifie Redis Database — un « instantané » de la base en mémoire. Périodiquement, Redis écrit tout dans un fichier dump.rdb.
Avantage : reprise rapide. Inconvénient : possible perte des écritures depuis le dernier instantané (ex. règle toutes les 5 minutes → jusqu’à 5 minutes de données en cas de crash).
Paramètres RDB
Contrôlé par save :
save <secondes> <nombre de clés modifiées>
Exemples :
save 900 1: au moins 1 clé modifiée en 900 s (15 min)save 300 10: au moins 10 clés en 300 s (5 min)save 60 10000: au moins 10000 clés en 60 s
Ces règles sont en OU : la première satisfaite déclenche la sauvegarde.
Monter un volume pour la persistance
Configurer RDB ne suffit pas : montez le volume sur l’hôte pour que dump.rdb survive à la suppression du conteneur.
mkdir -p ~/redis-data
Puis :
docker run -d \
--name redis-rdb \
-p 6379:6379 \
-v ~/redis-data:/data \
redis:latest \
redis-server --save 60 1 --dir /data
Points clés :
-v ~/redis-data:/data: montage hôte →/datadans le conteneur--save 60 1: test (1 clé en 60 s) — en prod, augmentez l’intervalle--dir /data: chemin du fichier RDB
Vérifier que la persistance fonctionne
docker exec -it redis-rdb redis-cli
set user:1 "Jean"
set user:2 "Marie"
Attendez ~60 s pour l’instantané, puis :
docker restart redis-rdb
docker exec -it redis-rdb redis-cli
get user:1
Si vous obtenez "Jean", la persistance est OK.
Sur l’hôte, ~/redis-data/dump.rdb doit exister — c’est l’instantané Redis.
Configurer la persistance AOF (journal)
Le RDB peut perdre les écritures après le dernier instantané. Pour une exigence forte sur l’intégrité des données, utilisez l’AOF.
Qu’est-ce que l’AOF ?
AOF = Append Only File. Chaque écriture (set, del, incr, etc.) est ajoutée à appendonly.aof.
Image : RDB = photo périodique, AOF = enregistrement continu. RDB = clichés espacés ; AOF = chaque action.
Avantage : plus sûr (souvent ≤ 1 s de perte avec everysec). Inconvénient : fichier plus volumineux, reprise un peu plus lente.
Trois stratégies de synchronisation AOF
- appendfsync always : sync disque à chaque écriture — très sûr, performances faibles, peu adapté au fort trafic
- appendfsync everysec : sync chaque seconde — recommandé en production, perte max ~1 s
- appendfsync no : laissé à l’OS — performances max, risque de perte plus élevé, déconseillé
Démarrer Redis avec AOF
mkdir -p ~/redis-data
docker run -d \
--name redis-aof \
-p 6379:6379 \
-v ~/redis-data:/data \
redis:latest \
redis-server --appendonly yes --appendfsync everysec --dir /data
Paramètres :
--appendonly yes--appendfsync everysec--dir /data
Après un moment :
ls ~/redis-data/
Vous devriez voir appendonly.aof.
Persistance hybride (Redis 4.0+, recommandé)
Depuis Redis 4.0, le mode hybride combine RDB et AOF :
- RDB pour une reprise rapide
- AOF pour la sécurité des données
Dans la config :
aof-use-rdb-preamble yes
Au redémarrage : chargement du préambule RDB, puis rejeu du delta AOF post-RDB.
Avec Redis 4.0+, le mode hybride est en général le bon choix — inutile de trancher RDB ou AOF.
Gérer Redis via un fichier de configuration (production)
Les paramètres en ligne de commande (--appendonly yes, etc.) deviennent illisibles quand ils se multiplient.
En production, standard = fichier de configuration.
Pourquoi un fichier de config ?
- Toute la config au même endroit
- Versionnable (Git)
- Partageable en équipe
- Modifications sans ressaisir une longue commande
docker run
Pour un Redis longue durée, ne passez pas par des dizaines d’arguments CLI.
Obtenir la config standard
mkdir -p ~/redis-config
docker run --rm redis:latest cat /etc/redis/redis.conf > ~/redis-config/redis.conf
Personnaliser redis.conf
Ouvrez redis.conf et adaptez :
1. Réseau
# Autoriser toutes les IP (en prod, préférez l'IP interne)
bind 0.0.0.0
# Désactiver le mode protégé (après mot de passe)
protected-mode no
2. Authentification
requirepass YourStrongPassword123
3. Persistance
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
aof-use-rdb-preamble yes
dir /data
4. Mémoire max
maxmemory 512mb
maxmemory-policy allkeys-lru
5. Journaux
loglevel notice
logfile ""
Démarrer avec le fichier de config
docker run -d \
--name redis-prod \
-p 6379:6379 \
-v ~/redis-config/redis.conf:/usr/local/etc/redis/redis.conf \
-v ~/redis-data:/data \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf
redis-server /usr/local/etc/redis/redis.conf indique le fichier à utiliser.
Vérifier la config
docker exec -it redis-prod redis-cli -a YourStrongPassword123
config get save
config get appendonly
config get maxmemory
Les valeurs doivent correspondre au fichier.
Authentification par mot de passe (3 méthodes)
Fait réel : Redis sans mot de passe exposé sur Internet, compromis et détourné pour le minage. Ce n’est pas une blague.
Pourquoi un mot de passe est obligatoire
Par défaut, Redis n’a pas de mot de passe. Port exposé (Internet ou réseau non fiable) = risque majeur.
En production, mot de passe = ligne de base.
Méthode 1 : paramètre en ligne de commande
docker run -d \
--name redis-pwd \
-p 6379:6379 \
redis:latest \
redis-server --requirepass "MyStr0ng#P@ssw0rd"
Pratique pour un test rapide ; évitez en production — le mot de passe reste dans l’historique shell.
Méthode 2 : fichier de config (recommandé)
requirepass YourStrongPassword123
Puis montage de redis.conf comme ci-dessus. Standard en équipe : pas d’exposition dans l’historique, gestion centralisée.
Recommandations :
- Au moins 16 caractères
- Majuscules, minuscules, chiffres, symboles
- Pas de mots courants ni de date de naissance
Méthode 3 : modification dynamique
Conteneur déjà lancé :
docker exec -it redis-pwd redis-cli
config set requirepass "NewPassword123"
Perdu au redémarrage — urgence uniquement.
Se connecter avec mot de passe
Option 1 : mot de passe sur la ligne de commande
docker exec -it redis-pwd redis-cli -a "MyStr0ng#P@ssw0rd"
Option 2 : AUTH après connexion
docker exec -it redis-pwd redis-cli
auth MyStr0ng#P@ssw0rd
set test "hello"
Erreur si mot de passe incorrect :
(error) NOAUTH Authentication required.
Utilisez auth pour vous authentifier.
Connexion depuis l’application
Chaîne de connexion :
redis://:YourStrongPassword123@localhost:6379
Exemple Node.js :
// Exemple Node.js
const redis = require('redis');
const client = redis.createClient({
host: 'localhost',
port: 6379,
password: 'YourStrongPassword123'
});
Déploiement avec Docker Compose (équipes)
docker run devient pénible sur des commandes longues. En équipe ou multi-conteneurs, Docker Compose est préférable.
Intérêt de Docker Compose
- Config dans
docker-compose.yml, versionnable - Démarrage en une commande
- Environnement identique pour toute l’équipe
- Plusieurs services (Redis + MySQL + Nginx, etc.)
Exemple docker-compose.yml complet
version: '3.8'
services:
redis:
image: redis:7.2-alpine
container_name: redis-prod
restart: always
ports:
- "6379:6379"
volumes:
- ./redis-config/redis.conf:/usr/local/etc/redis/redis.conf
- ./redis-data:/data
command: redis-server /usr/local/etc/redis/redis.conf
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
volumes:
redis-data:
driver: local
Notes :
image: redis:7.2-alpine: image légère Alpinerestart: always: redémarrage automatiquevolumes: config + donnéeshealthcheck: ping toutes les 10 s
Démarrage en une commande
docker-compose up -d
État, journaux, arrêt, redémarrage
docker-compose ps
docker-compose logs -f redis
docker-compose down
docker-compose restart redis
docker-compose down supprime le conteneur, pas le volume (données conservées).
Stack multi-services
version: '3.8'
services:
redis:
# config Redis...
mysql:
image: mysql:8.0
# config MySQL...
app:
build: .
# config app...
depends_on:
- redis
- mysql
Redis, MySQL et l’app démarrent ensemble avec les dépendances gérées.
Dépannage et bonnes pratiques
Consulter les journaux
docker logs --tail 100 redis-prod
docker logs -f redis-prod
Avec Compose :
docker-compose logs -f redis
Les logs indiquent démarrage, erreurs de config, connexions suspectes, etc.
Healthcheck
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
Toutes les 10 s, redis-cli ping ; 3 échecs → conteneur unhealthy. Avec restart: always, redémarrage automatique.
Optimisation des performances
1. Limiter la mémoire
maxmemory 512mb
maxmemory-policy allkeys-lru
allkeys-lru : à saturation, éviction des clés les moins récemment utilisées.
2. Désactiver les commandes dangereuses
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""
3. Fréquence de persistance
Les save par défaut conviennent à beaucoup de cas. Redis surtout cache, tolérance à la perte : intervalles plus larges possibles.
Renforcement sécurité
1. Ne pas exposer Redis sur Internet
Accès distant : tunnel SSH ou VPN.
bind 127.0.0.1 192.168.1.100
2. Mot de passe fort
requirepass Th1s!sA$tr0ngP@ssw0rd2024
3. Sauvegardes régulières
Même avec persistance, sauvegardez. Exemple de script :
#!/bin/bash
DATE=$(date +%Y%m%d)
cp ~/redis-data/dump.rdb ~/redis-backup/dump-$DATE.rdb
cp ~/redis-data/appendonly.aof ~/redis-backup/appendonly-$DATE.aof
Checklist production
- ✅ Persistance (hybride RDB+AOF recommandé)
- ✅ Mot de passe activé
- ✅ Volume monté sur l’hôte
- ✅ Config personnalisée (pas les défauts)
- ✅ Journaux consultables
- ✅ Healthcheck configuré
- ✅ Mémoire max limitée
- ✅ Commandes dangereuses désactivées/renommées
- ✅ Stratégie de sauvegarde
- ✅ Pas d’exposition publique (ou VPN/SSH)
Surveiller les performances
docker exec -it redis-prod redis-cli -a your_password
info memory
info persistence
info clients
Si vous êtes arrivé jusqu’ici, vous avez en principe un Redis conteneurisé de niveau production : données persistées, mot de passe, config structurée.
Conclusion
Vendredi soir, Redis déployé ; lundi matin, tout perdu. Vous savez maintenant : pas de persistance, données dans le conteneur, redémarrage = vide.
Ce guide couvre :
- RDB : instantanés, reprise rapide, adapté aux sauvegardes
- AOF : journal des écritures, sécurité élevée, perte typique ≤ 1 s
- Hybride (recommandé) : rapidité RDB + sécurité AOF
- Mot de passe : trois méthodes, obligatoire en production
- Fichier de config : déploiement normé, maintenance et équipe
- Docker Compose : démarrage unique, config as code
Si vous utilisez déjà Redis sous Docker, vérifiez tout de suite :
- Volume monté ? (
-v ~/redis-data:/data) - Persistance activée ? (RDB, AOF ou hybride)
- Mot de passe ? (
requirepass) - Config personnalisée ? (pas les défauts)
En production, ces quatre points sont le minimum.
Gardez cet article pour le prochain déploiement Redis ; partagez-le en équipe pour harmoniser les pratiques.
Les réglages ici visent Redis 7.x. Autre version : consultez la documentation officielle Redis pour d’éventuels changements de paramètres.
Déploiement complet de Redis avec Docker
Configurer RDB/AOF et l'authentification par mot de passe pour éviter la perte de données au redémarrage — adapté à la production
⏱️ Estimated time: 30 min
- 1
Step 1: Déploiement de base : Volume et persistance
Créer un Volume pour le répertoire de données :
• docker run -d -v redis-data:/data redis:7.0
• Les données restent dans le Volume même si le conteneur est supprimé
Configurer la persistance RDB :
• Paramètre save dans redis.conf
• save 900 1 (au moins 1 clé modifiée en 900 s)
• save 300 10 (au moins 10 clés en 300 s)
• save 60 10000 (au moins 10000 clés en 60 s)
• Instantanés périodiques
Configurer la persistance AOF :
• appendonly yes dans redis.conf
• Enregistre chaque écriture — plus sûr
Mode hybride :
• RDB + AOF (recommandé en production)
• Récupération rapide et sécurité des données - 2
Step 2: Configuration de l'authentification par mot de passe
Dans redis.conf, paramètre requirepass :
• requirepass yourpassword
Mot de passe via variable d'environnement :
• docker run -e REDIS_PASSWORD=yourpassword
Avec docker-compose :
• environment:
REDIS_PASSWORD: yourpassword
Éviter l'accès non autorisé
Vérifier l'authentification :
• redis-cli -a yourpassword à la connexion
• ou commande AUTH - 3
Step 3: Checklist production et stratégie de sauvegarde
Checklist déploiement production :
1. Volume monté ? (-v ~/redis-data:/data)
2. Persistance activée ? (RDB, AOF ou hybride)
3. Mot de passe défini ? (requirepass)
4. Fichier de config personnalisé ? (pas la config par défaut)
Stratégie de sauvegarde :
• Sauvegarder régulièrement les données du Volume
• Exporter RDB avec redis-cli --rdb
• Scripts de sauvegarde automatique
• Gérer plusieurs conteneurs avec docker-compose
• Configurer le healthcheck
En production, ces quatre points sont le minimum — ainsi vous évitez perte de données et accès non autorisé.
FAQ
Comment éviter la perte de données avec Redis sous Docker ?
• RDB (instantanés périodiques, paramètre save)
• AOF (chaque écriture, appendonly yes)
• Mode hybride RDB+AOF (recommandé en production)
• Volume : docker run -v redis-data:/data
Cause : au redémarrage, les données disparaissent car Redis n'active pas la persistance par défaut — tout est en mémoire ; supprimer le conteneur efface les données sans RDB/AOF.
Étapes : Volume → redis.conf (persistance + mot de passe) → démarrer → vérifier → stratégie de sauvegarde.
Comment configurer la persistance Redis ?
• save dans redis.conf
• save 900 1, save 300 10, save 60 10000
• Instantanés périodiques
AOF :
• appendonly yes
• Journal de chaque écriture
Hybride : RDB + AOF (production) — récupération rapide et sécurité.
Volume : docker run -d -v redis-data:/data redis:7.0 — les données survivent à la suppression du conteneur.
Comment configurer l'authentification par mot de passe Redis ?
• requirepass yourpassword
Variable d'environnement :
• docker run -e REDIS_PASSWORD=yourpassword
docker-compose :
• environment:
REDIS_PASSWORD: yourpassword
Vérification :
• redis-cli -a yourpassword
• ou commande AUTH
Que faut-il surveiller pour Redis en production ?
1) Volume monté (-v ~/redis-data:/data)
2) Persistance (RDB, AOF ou hybride)
3) Mot de passe (requirepass)
4) Config personnalisée (pas les défauts)
Sauvegardes : Volume, redis-cli --rdb, scripts automatiques, docker-compose, healthcheck.
Ces quatre points sont le minimum en production.
10 min de lecture · Publié le: 17 déc. 2025 · Mis à jour le: 27 juil. 2026
Guide pratique Docker
Si vous arrivez depuis la recherche, le plus rapide est de passer à l’article précédent ou suivant de cette série.
Précédent
Dépannage des timeouts Docker pull en intranet d'entreprise : DNS, proxy et accélérateurs de registre
Docker pull en timeout dans votre intranet d'entreprise ? Ce guide détaille un flux de dépannage complet : DNS, proxy et accélérateurs de registre, avec une liste de miroirs testés en mai 2026 pour localiser et résoudre le problème rapidement.
Partie 25 sur 38
Suivant
Guide complet Docker MySQL : persistance et réplication maître-esclave
De la persistance des données Docker MySQL à la réplication maître-esclave : résoudre la perte de données au redémarrage, le montage de configuration et les échecs de connexion avec un déploiement prêt pour la production.
Partie 27 sur 38



Commentaires
Connectez-vous avec GitHub pour laisser un commentaire