Redis est un magasin de données basé sur la mémoire, il est donc fondamentalement volatile. Lorsque le serveur Redis redémarre, toutes les données peuvent disparaître, c'est pourquoi Redis propose deux méthodes de conservation des données : RDB (Redis Database Snapshot) et AOF (Append-Only File). Dans cet article, nous examinerons les caractéristiques et les différences entre ces deux méthodes, ainsi que leurs configurations, avantages et inconvénients.
1. RDB (Redis Database Snapshot)
La méthode RDB consiste à enregistrer périodiquement les données stockées en mémoire dans un snapshot sur disque. Redis crée des fichiers RDB selon les intervalles définis, permettant ainsi de récupérer les données lors du redémarrage du serveur.
Caractéristiques principales de RDB
- Intervalle de sauvegarde : Vous pouvez définir la fréquence de sauvegarde des données sur disque via l'option
save
dans le fichierredis.conf
. Par exemple,save 60 1000
génère un snapshot si plus de 1000 clés sont modifiées toutes les 60 secondes.
save 60 1000
- Emplacement du fichier : Le fichier RDB est par défaut enregistré dans le répertoire spécifié par
dir
, avec le chemin par défaut étant/var/lib/redis
et le nom de fichierdump.rdb
.
dir /var/lib/redis/
dbfilename dump.rdb
Avantages de RDB
- Performances élevées : La méthode RDB n'impacte pas considérablement les performances de Redis, et si l'intervalle de génération de snapshot est long, elle ne consomme pas beaucoup de ressources CPU.
- Taille de fichier réduite : Étant donné qu'elle enregistre périodiquement l'intégralité des données sous forme de snapshot, la taille des fichiers reste relativement petite, facilitant la gestion des sauvegardes.
Inconvénients de RDB
- Possibilité de perte de données : Comme la méthode RDB sauvegarde périodiquement, si Redis s'arrête soudainement, les données après le dernier snapshot peuvent être perdues.
- Temps de récupération : Comme RDB sauvegarde l'intégralité des données en une fois, la récupération d'un grand volume de données peut prendre plus de temps.
Cas d'utilisation appropriés pour RDB
RDB est principalement adapté lorsque vous pouvez vous permettre de sauvegarder des données de cache à intervalles réguliers. Cela est avantageux lorsque la sauvegarde périodique des données est nécessaire plutôt qu'un traitement en temps réel, permettant ainsi de maintenir les performances du serveur Redis tout en assurant une certaine conservation des données.
2. AOF (Append-Only File)
AOF consigne toutes les opérations d'écriture de Redis sur disque de manière séquentielle, offrant ainsi une conservation continue des données. Le fichier AOF enregistre toutes les modifications de données, permettant une récupération complète même après un redémarrage du serveur Redis.
Caractéristiques principales de AOF
- Système d'enregistrement des commandes : Le fichier AOF enregistre toutes les commandes de modification de données. À chaque fois qu'une commande d'écriture est effectuée, elle est enregistrée sur disque, garantissant que toutes les modifications de données sont conservées.
- Emplacement et nom de fichier : Le fichier AOF est enregistré sous un nom spécifié par l'option
appendfilename
. La valeur par défaut estappendonly.aof
, et il est stocké dans le répertoire défini par l'optiondir
.
dir /var/lib/redis/
appendonly yes
appendfilename appendonly.aof
- Intervalle de synchronisation : L'intervalle d'écriture des données sur disque peut être configuré via l'option
appendfsync
.
appendfsync everysec # Synchronisation chaque seconde
Avantages de AOF
- Conservation des données : En enregistrant toutes les opérations d'écriture sur disque, il est possible de récupérer les données jusqu'à l'état de la dernière opération, même si le serveur s'arrête soudainement.
- Commandes de lecture non enregistrées : AOF ne consigne que les commandes de modification de données, ce qui évite d'inclure des commandes de lecture inutiles, économisant ainsi de l'espace de stockage.

Inconvénients de AOF
- Possibilité de baisse de performance : Comme toutes les opérations d'écriture sont enregistrées sur disque, cela peut entraîner une baisse de performance, surtout si
appendfsync
est réglé suralways
. - Augmentation de la taille du fichier : En cas de modifications fréquentes de données, le fichier AOF peut devenir très volumineux. Pour remédier à cela, Redis propose la commande BGREWRITEAOF pour compresser le fichier AOF.
Cas d'utilisation appropriés pour AOF
AOF est utile dans les cas de files d'attente de tâches ou pour les applications où la conservation des données est critique. Lorsque la conservation des données est essentielle, vous pouvez l'utiliser avec la synchronisation périodique (everysec
) pour équilibrer performance et conservation des données.
3. Utilisation simultanée de RDB et AOF
Dans Redis, il est possible d'utiliser simultanément les méthodes RDB et AOF pour maintenir un équilibre entre conservation des données et performance. Lorsque les deux méthodes sont activées, Redis récupérera principalement à partir du fichier AOF.
- RDB : Enregistre les données rapidement et facilement, avec un mode snapshot qui fournit une sauvegarde de base.
- AOF : Enregistre toutes les opérations d'écriture, minimisant ainsi le risque de perte de données.
4. Exemple de configuration Redis
Voici un exemple de configuration qui utilise simultanément RDB et AOF tout en maintenant des performances et une conservation des données appropriées.
# Configuration répertoire et fichiers de base de Redis
dir /var/lib/redis/
dbfilename dump.rdb
appendfilename appendonly.aof
# Configuration de snapshot RDB (sauvegarde si plus de 1000 clés changées toutes les 60 secondes)
save 60 1000
# Configuration AOF
appendonly yes
appendfsync everysec # Synchronisation du disque chaque seconde
# Configuration de réécriture AOF (réécriture automatique si la taille du fichier dépasse 64 Mo)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
Conclusion
Dans cet article, nous avons étudié les deux méthodes de conservation des données de Redis, RDB et AOF. Chaque méthode présente des différences en matière de conservation et de performance, il est donc crucial de choisir la méthode appropriée selon les caractéristiques de votre application. Dans la prochaine partie, nous aborderons la gestion de la mémoire de Redis et l'optimisation des performances, en présentant des méthodes pour tirer efficacement parti de la mémoire de Redis.
Aucun commentaire.