Redis est un système de gestion de base de données qui a la particularité de conserver les informations exclusivement selon le format d’un dictionnaire « clé-valeur ». L’une de ses caractéristiques est de charger toute sa base de données dans sa RAM, ce qui le rend particulièrement rapide.
Le déploiement de notre première instance de Redis en production remonte au 2 janvier 2022 avec nitter-redis, lorsqu’il est devenu une dépendance du service Nitter. Nous l’utilisons par la suite pour améliorer les performances de notre service Nextcloud. Les deux instances sont séparées et sont utilisées exclusivement pour servir de cache pour ces deux services.
Nous utilisons l’image Redis officielle, variante alpine
.
Contrairement à PostgreSQL, nous ne mutualisons pas les bases de données de Redis sur une seule instance, pour plusieurs raisons :
Il est possible d’inspecter le fonctionnement de Redis à l’aide du client intégré dans le conteneur :
docker exec -it nitter-redis ash
redis-cli -h REDIS_HOSTNAME -p REDIS_PORT -a REDIS_PASSWORD
127.0.0.1:6379> PING
PONG
La consommation en RAM de ce service dépend intrinsèquement de la taille de sa base de données et tend donc à augmenter avec le temps, de 10 MB à 300 MB ou plus. Sa consommation de CPU reste très faible.
Comme tous les autres services de bases de données, son port ne doit pas être exposé à un réseau public et la connexion à ce service doit être sécurisée. Par défaut, Redis ne demande pas de mot de passe lors de la connexion pour l’accès à la base de données ; il est préférable d’en paramétrer un.
Nous utilisons Redis comme un cache, sa base de données peut donc être supprimée de temps à autres selon sa taille. Il est assez fréquent que la base de données de Nitter atteigne sa limite de 300 MB en raison de son utilisation importante, auquel cas nous supprimons purement et simplement sa base de données pour repartir sur une base vierge, ce qui n’impacte pas les performances de Nitter.
Pour mettre à jour notre image de Redis, il suffit de télécharger la nouvelle image et de redémarrer le conteneur. Il est préférable de redémarrer le service qui dépend de Redis par la même occasion.