Redis propose une méthode de stockage permanent des données sur disque appelée AOF (Append-Only File). Cependant, au fil du temps, lorsque la taille du fichier AOF augmente, cela peut entraîner des problèmes de performance et d'espace disque. Pour résoudre ce problème, Redis offre la fonctionnalité Réécriture AOF (AOF Rewrite). Dans cet article, nous examinerons en détail ce qu'est la Réécriture AOF, comment elle fonctionne et comment la configurer.


1. Qu'est-ce que AOF (Append-Only File) ? Pourquoi la réécriture est-elle nécessaire ?

Redis utilise un fichier AOF pour stocker les données de manière permanente en enregistrant toutes les opérations d'écriture séquentiellement. Par exemple, chaque fois qu'une commande comme SET key value est exécutée, cela est enregistré dans le fichier AOF. Cela permet de restaurer les données même après un redémarrage du serveur Redis.

Cependant, avec le temps, les commandes redondantes sur la même clé continuent à être ajoutées au fichier AOF, ce qui entraîne une augmentation de la taille et un allongement du temps de récupération.

Pour remédier à cela, la fonctionnalité de réécriture AOF (compression, nettoyage) est fournie.


2. Qu'est-ce que AOF Rewrite ?

Infographie Redis AOF Rewrite

AOF Rewrite est le processus de remplacement de l'ancien fichier appendonly.aof par un nouveau fichier optimisé. Un nouveau fichier est créé tout en maintenant l'ancien fichier tel quel, et les commandes inutiles sont éliminées pour réduire la taille. Ce qui est essentiel ici est l'expression remplacer l'ancienne version après optimisation, qui résume le fonctionnement de la réécriture.

📌 Fonctionnement de la Réécriture AOF

  1. Redis ne modifie pas directement l'ancien fichier AOF, mais crée un nouveau fichier AOF.
  2. Le nouveau fichier comprend uniquement les commandes minimales reflétant l'état actuel.
  3. Par exemple, si l'ancien fichier AOF est le suivant : SET key1 "hello" SET key1 "world" SET key1 "final" Après réécriture AOF, il sera optimisé ainsi : SET key1 "final"
  4. Une fois que le nouveau fichier appendonly.aof.tmp est terminé, l'ancien fichier est supprimé et remplacé par le nouveau fichier.

3. Comment configurer AOF Rewrite

✅ Configuration automatique de la Réécriture AOF

Il est possible de configurer Redis pour que la réécriture AOF s'exécute automatiquement. Dans redis.conf, configurez comme suit :

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
  • auto-aof-rewrite-percentage 100 : Réalise une réécriture si la taille du fichier augmente de 100% (doublée) depuis la dernière réécriture AOF.
  • auto-aof-rewrite-min-size 64mb : La réécriture ne se produit que si le fichier AOF est au moins de 64 Mo.

En d'autres termes, si la taille du fichier AOF était de 50 Mo et qu'elle monte à 100 Mo, la réécriture s'exécutera automatiquement.

Il est recommandé de toujours paramétrer ces deux options ensemble. Si vous ne spécifiez pas de valeur pour auto-aof-rewrite-min-size, une réécriture indésirable pourrait se produire si la taille du fichier précédent de 20 Mo monte soudainement à 40 Mo. Donc, en définissant auto-aof-rewrite-min-size, vous vous assurez que la réécriture ne s'exécute que lorsque la taille dépasse un certain seuil.

Ainsi, si la taille du fichier AOF était de 50 Mo et qu'elle passe ensuite à 100 Mo, la réécriture s'exécute automatiquement.

✅ Exécution manuelle de la Réécriture AOF

En exécutant la commande suivante, Redis effectuera immédiatement une réécriture AOF.

redis-cli BGREWRITEAOF

En exécutant cette commande, Redis génère en arrière-plan un nouveau fichier AOF, et le processus de remplacement de l'ancien fichier est effectué automatiquement.


4. Résultat de la Réécriture AOF

Lorsque la réécriture AOF est exécutée, le répertoire de données de Redis (/var/lib/redis, etc.) génère des fichiers comme suit.

ls /var/lib/redis

Exemple de sortie :

appendonly.aof
appendonly.aof.tmp  # fichier temporaire créé lors de l'écriture
  • appendonly.aof.tmp : nouveau fichier AOF optimisé créé pendant la réécriture.
  • appendonly.aof : supprimé après la réécriture et remplacé par le nouveau fichier.

🚨 La réécriture AOF ne compresse pas l'ancien fichier AOF; elle crée plutôt un nouveau fichier AOF pour le remplacer.


5. Quand utiliser la Réécriture AOF ?

Lorsque la taille du fichier AOF devient trop grande et occupe beaucoup d'espace disque - Redis écrit continuellement des données, donc la taille du fichier augmente avec le temps. - En nettoyant les commandes inutiles, vous pouvez réduire l'utilisation de l'espace disque.

Lorsque vous souhaitez accélérer la vitesse de récupération lors du redémarrage de Redis - Si la taille du fichier AOF est grande, Redis doit exécuter toutes les commandes pour restaurer les données lors du redémarrage, ce qui prend beaucoup de temps. - En effectuant une réécriture AOF, la taille du fichier sera réduite et la vitesse de récupération sera accélérée.

Lorsque vous souhaitez optimiser les performances de Redis - Si le fichier AOF devient trop volumineux, les performances de Redis peuvent en souffrir. - En exécutant régulièrement la réécriture AOF, vous pouvez assurer un fonctionnement plus stable de Redis.


6. Différences entre les instantanés RDB et la Réécriture AOF

Critères de comparaison AOF (Append-Only File) RDB (Redis Database)
Méthode de stockage Enregistre toutes les opérations d'écriture Effectue un dump complet des données à intervalles réguliers
Vitesse de récupération Lente (nécessite l'exécution de toutes les commandes) Rapide (restauration par dump binaire)
Possibilité de perte de données Faible (dépend de l'option fsync) Présente (selon la fréquence des instantanés)
Taille du fichier Grande (toutes les opérations sont enregistrées) Petite (seul l'état actuel est enregistré)
Impact sur les performances Élevé (toutes les opérations sont enregistrées dans les logs) Bas (effectue des dumps périodiques)
Usage approprié Cas nécessitant une haute durabilité Cas nécessitant une restauration rapide

👉 Dans un environnement d'exploitation Redis, il est courant de configurer AOF + RDB pour garantir des performances optimales et une meilleure stabilité.


7. Conclusion et résumé

  • La réécriture AOF de Redis est effectuée pour réduire la taille du fichier AOF et améliorer la vitesse de récupération.
  • Elle fonctionne en remplaçant l'ancien fichier par un nouveau fichier AOF optimisé, sans modifier directement l'ancien fichier AOF.
  • En configurant correctement auto-aof-rewrite-percentage et auto-aof-rewrite-min-size, vous pouvez gérer efficacement les performances et l'espace de stockage.
  • Utilisée avec les instantanés RDB, la méthode permet d'optimiser à la fois la durabilité et les performances de Redis.

📌 Utilisez judicieusement la Réécriture AOF pour optimiser les performances de votre Redis ! 🚀

Vous pouvez retrouver plus d'articles sur la configuration de Redis en recherchant 'redis' dans la barre de recherche à droite.

Si vous avez besoin d'une clarification sur les concepts de RDB et AOF, je vous recommande également de lire l'article suivant.

Redis Partie 2 : Options de conservation des données de Redis - RDB vs AOF