Redis est un système de stockage de données en mémoire couramment utilisé pour le cache, les compteurs, les sessions, les files de tâches et les données temporaires. Ses structures de données et ses opérations rapides en font un complément utile à une base de données relationnelle dans de nombreuses architectures.
Comment fonctionne Redis ?
Redis organise les données principalement sous forme de paires clé-valeur. Les données sont conservées en mémoire pour permettre un accès rapide. Selon la configuration et les besoins, des mécanismes de persistance peuvent également enregistrer les données sur disque afin de faciliter la récupération après un redémarrage.
Redis est souvent utilisé comme couche de cache devant une base de données principale. L'application consulte d'abord Redis ; si la donnée est absente ou expirée, elle la récupère dans la source principale puis peut la remettre en cache.
Principales structures de données
- String : chaînes de caractères, valeurs simples, compteurs et données sérialisées.
- Hash : ensembles de champs et de valeurs adaptés aux objets simples.
- List : listes utiles pour certaines files de tâches et séquences ordonnées.
- Set : ensembles de valeurs uniques et opérations d'union, d'intersection ou de différence.
- Sorted Set : ensembles de membres associés à un score, utiles pour les classements.
- Structures supplémentaires : selon la version, Redis propose aussi des structures destinées notamment aux flux, aux bitmaps et aux ensembles probabilistes.
Cas d'utilisation courants
1. Cache de données
Les résultats de requêtes coûteuses ou les données fréquemment consultées peuvent être mis en cache afin de réduire la charge de la base principale et le temps de réponse. Il faut toutefois prévoir une stratégie d'expiration et de renouvellement des valeurs.
2. Sessions et données temporaires
Redis peut conserver des informations de session ou des données à durée de vie limitée. Les durées d'expiration doivent correspondre aux besoins de sécurité et de fonctionnement de l'application.
3. Compteurs et classements
Les opérations atomiques sur les nombres et les ensembles triés sont pratiques pour les compteurs, les statistiques en temps réel et certains classements.
4. Files et flux de tâches
Les listes et les structures de flux peuvent servir à organiser des tâches ou des événements. Le niveau de garantie de livraison, la reprise après incident et le traitement des doublons doivent être définis selon les besoins du système.
Bonnes pratiques de gestion du cache
- Définir un TTL : attribuez une durée de vie aux données temporaires lorsque cela est approprié.
- Prévoir les cache misses : définissez le comportement de l'application lorsque la clé n'existe pas ou a expiré.
- Éviter les expirations simultanées : ajoutez éventuellement une variation aux TTL pour réduire les pics de requêtes vers la base principale.
- Choisir des clés cohérentes : adoptez une convention de nommage lisible, par exemple avec des préfixes par fonctionnalité.
- Limiter la taille des valeurs : évitez de stocker des objets volumineux sans nécessité et mesurez la consommation mémoire.
- Surveiller l'éviction : configurez une politique adaptée lorsque la mémoire atteint sa limite.
Persistance et cohérence des données
Redis peut être configuré pour utiliser différents mécanismes de persistance, mais le cache ne doit pas être considéré automatiquement comme la source de vérité. Si une donnée est importante, déterminez quelle base fait autorité et comment les modifications sont répercutées dans le cache.
Les stratégies courantes comprennent l'invalidation après mise à jour, l'expiration contrôlée et le renouvellement à la demande. Il faut également réfléchir aux accès concurrents, aux échecs partiels et aux données obsolètes.
Sécurité et exploitation
- Ne rendez pas le service Redis accessible publiquement sans protection.
- Limitez les accès réseau aux seules applications autorisées.
- Configurez l'authentification et les mécanismes de contrôle d'accès adaptés à votre version.
- Utilisez le chiffrement des communications lorsque l'environnement l'exige.
- Surveillez la mémoire, la latence, le nombre de connexions et les opérations lentes.
- Testez les sauvegardes et les procédures de restauration si des données persistantes sont utilisées.
Conclusion
Redis permet d'accélérer de nombreux traitements et de gérer efficacement des données temporaires. Pour obtenir un système fiable, il faut choisir les structures adaptées, maîtriser la durée de vie des clés, surveiller la mémoire et définir clairement la cohérence entre le cache et la base de données principale.