Connecteur Redis 🔴
Sauvegarde une instance Redis en récupérant un snapshot RDB consistant via
redis-cli --rdb. Restaure le RDB sur disque pour rechargement par l'instance Redis.
- Image :
ilygo/bridge-redis:7 - Sous-commande :
ilygo-bridge redis - Outils embarqués :
redis-cli
Variables d'environnement
En plus des variables communes :
| Variable | Obligatoire | Description |
|---|---|---|
REDIS_URL |
oui | URL de connexion, ex : redis://[:password@]HOST:6379/0 |
REDIS_RESTORE_PATH |
non | Chemin où écrire le RDB lors d'une restauration (défaut /data/dump.rdb) |
Surchargeable par commande via payload.url.
Prérequis
- Redis doit autoriser la génération d'un snapshot (
redis-cli --rdbdéclenche unSAVE/BGSAVEcôté serveur). - Si l'instance utilise un mot de passe :
redis://:motdepasse@host:6379/0. Pour Redis 6+ avec ACL :redis://user:password@host:6379/0. - L'utilisateur doit avoir le droit d'exécuter
SAVE/BGSAVE.
Déploiement (docker-compose)
services:
app-redis:
image: redis:7-alpine
command: redis-server --save 900 1
volumes: [redis_data:/data]
networks: [app-net]
ilygo-bridge:
image: ilygo/bridge-redis:7
restart: unless-stopped
networks: [app-net, default]
environment:
ILYGO_ENDPOINT: https://backup.example/api/v1
ILYGO_API_KEY: ik_xxx
ILYGO_PASSPHRASE: ${ILYGO_PASSPHRASE}
ILYGO_RESTORE_SECRET: 3f87d2022d95...
ILYGO_LABEL: prod-redis
REDIS_URL: redis://app-redis:6379/0
# Pour restaurer dans le volume partagé :
REDIS_RESTORE_PATH: /data/dump.rdb
volumes:
- redis_data:/data # partagé avec app-redis pour la restauration in_place
networks:
app-net:
internal: true
volumes:
redis_data:
Mécanisme de backup
redis-cli -u "$REDIS_URL" --rdb /tmp/snapshot.rdb
--rdbdemande à Redis un snapshot RDB consistant et le télécharge.- Le fichier RDB est lu puis poussé en chunks chiffrés.
- Un RDB capture tout le dataset à un instant donné (clés, TTL, types).
Mécanisme de restauration
Avec un RAT, le bridge déchiffre/décompresse le RDB et l'écrit sur disque :
side_by_side (recommandé) : écrit dans <REDIS_RESTORE_PATH>.restored (ex : /data/dump.rdb.restored). Vous démarrez une instance Redis temporaire pointant sur ce fichier pour inspecter.
in_place (exige confirm_destructive) : écrit dans REDIS_RESTORE_PATH (ex : /data/dump.rdb).
⚠️ Redis charge son RDB au démarrage. Après écriture du fichier, vous devez redémarrer l'instance Redis cible pour qu'elle recharge le dataset :
bash docker compose restart app-redis(Le connecteur écrit le fichier ; le redémarrage reste une action opérateur volontaire, pour éviter toute coupure non maîtrisée.)
Réseau & sécurité
- Aucun port exposé par le bridge.
- Pour la restauration in_place, le bridge et Redis partagent le volume
/data. - En prod : limitez les droits du volume,
cap_drop: [ALL].
Dépannage
| Symptôme | Cause | Solution |
|---|---|---|
NOAUTH Authentication required |
mot de passe absent dans l'URL | redis://:password@host:6379/0 |
--rdb timeout |
gros dataset + SAVE bloquant |
Préférez une fenêtre creuse ; Redis ≥ utilise BGSAVE |
| RDB restauré non chargé | Redis pas redémarré | docker compose restart app-redis |
Permission denied à l'écriture |
volume non partagé / droits | Montez le volume /data sur le bridge |
Limites & roadmap
- v1 : snapshot RDB complet (point-in-time). Le redémarrage de l'instance cible est manuel.
- Roadmap : option AOF (append-only file) + reload à chaud via
DEBUG RELOAD/ réplication.