Menu

Redis : Définition et Guide Complet

7 min de lecture Mis à jour le 03 Avr 2026

Définition

Redis (Remote Dictionary Server) est un système de stockage de données en mémoire, open source, qui fonctionne comme base de données, cache et broker de messages. Reconnu pour ses performances exceptionnelles (latences sub-milliseconde), Redis est devenu un composant incontournable des architectures web modernes.

Qu'est-ce que Redis ?

Redis, acronyme de Remote Dictionary Server, est un système de stockage de données en mémoire (in-memory) open source créé en 2009 par Salvatore Sanfilippo. Contrairement aux bases de données traditionnelles qui stockent les données sur disque, Redis maintient l'intégralité de ses données en RAM, ce qui lui confère des performances extraordinaires : les opérations de lecture et d'écriture s'exécutent en microsecondes.

Redis n'est pas une simple base de données clé-valeur. Il supporte des structures de données riches et variées : chaînes de caractères, listes, ensembles, ensembles triés, tables de hachage, flux (streams), bitmaps et structures HyperLogLog. Cette richesse de types de données permet d'utiliser Redis pour des cas d'usage allant bien au-delà du simple cache : files de messages, classements en temps réel, compteurs distribués, sessions utilisateur et pub/sub.

Chez Kern-IT, Redis est un composant central de notre stack technique, présent dans la majorité de nos projets en production. Nous l'utilisons comme cache Django pour accélérer les réponses web, comme broker de messages pour Celery (notre gestionnaire de tâches asynchrones), et comme store de sessions pour les applications à haute disponibilité. Sa polyvalence en fait un outil indispensable dans nos architectures.

Pourquoi Redis est important

Dans un monde où les utilisateurs s'attendent à des temps de réponse inférieurs à 200 millisecondes, la performance des applications web est un enjeu critique. Redis adresse ce défi en offrant des performances que les bases de données relationnelles ne peuvent tout simplement pas atteindre.

  • Performances extrêmes : avec des latences de l'ordre de 0,1 ms pour les opérations simples, Redis est jusqu'à 100 fois plus rapide qu'une requête PostgreSQL pour la lecture de données fréquemment accédées. Ce gain de performance se traduit directement en une meilleure expérience utilisateur.
  • Réduction de charge sur la base de données : en plaçant Redis entre l'application et la base de données relationnelle, les requêtes les plus fréquentes sont servies depuis le cache sans solliciter PostgreSQL. Cela permet de supporter des pics de trafic sans dégrader les performances.
  • Tâches asynchrones : Redis excelle comme broker de messages pour Celery. Les tâches longues (envoi d'emails, traitement d'images, appels API externes) sont déléguées à des workers via Redis, libérant le serveur web pour traiter les requêtes utilisateur.
  • Données temps réel : les structures de données Redis (sorted sets, streams, pub/sub) sont idéales pour les fonctionnalités temps réel : classements de jeux, compteurs de visiteurs, notifications push et chat en direct.
  • Simplicité opérationnelle : Redis est simple à installer, à configurer et à monitorer. Un seul binaire, un fichier de configuration, et Redis est opérationnel en production.

Comment ça fonctionne

Redis fonctionne selon un modèle single-threaded pour le traitement des commandes, utilisant un event loop (basé sur l'I/O multiplexé) pour gérer des milliers de connexions simultanées. Ce choix architectural peut sembler contre-intuitif, mais il élimine le coût des verrous (locks) et des changements de contexte, permettant à Redis d'exécuter plus de 100 000 opérations par seconde sur un seul cœur CPU.

Les données Redis résident en mémoire RAM, mais la persistance sur disque est assurée par deux mécanismes complémentaires. Le RDB (Redis Database) effectue des snapshots périodiques de l'intégralité des données. L'AOF (Append Only File) journalise chaque commande d'écriture dans un fichier, permettant de rejouer les opérations en cas de redémarrage. En production, les deux mécanismes sont souvent activés simultanément pour maximiser la durabilité.

Le système d'expiration des clés est fondamental pour l'utilisation en cache. Chaque clé Redis peut avoir un TTL (Time To Live), après lequel elle est automatiquement supprimée. Redis utilise une combinaison de suppression paresseuse (les clés expirées sont supprimées à l'accès) et de suppression active (un processus périodique échantillonne et supprime les clés expirées) pour gérer efficacement la mémoire.

Redis Sentinel fournit la haute disponibilité en surveillant les instances Redis et en effectuant un basculement automatique (failover) en cas de défaillance du maître. Redis Cluster, quant à lui, distribue automatiquement les données sur plusieurs nœuds pour la scalabilité horizontale, supportant des datasets qui dépassent la capacité mémoire d'un seul serveur.

Exemple concret

Dans les projets Django de Kern-IT, Redis remplit trois rôles simultanés. Premièrement, il sert de backend de cache Django via django-redis. Les pages fréquemment consultées, les résultats de requêtes complexes et les fragments de templates sont mis en cache dans Redis, réduisant les temps de réponse de plus de 50 %. Pour un site Wagtail avec des milliers de pages, le cache Redis est la différence entre un temps de réponse de 200 ms et de 20 ms.

Deuxièmement, Redis agit comme broker de messages pour Celery dans nos architectures asynchrones. Quand un utilisateur soumet un formulaire de contact ou qu'un administrateur déclenche un export de données, la tâche est placée dans une file Redis et exécutée par un worker Celery en arrière-plan. L'utilisateur reçoit une réponse immédiate tandis que le traitement se fait de manière asynchrone.

Troisièmement, pour un projet IoT développé par Kern-IT, Redis est utilisé comme buffer de données temps réel. Les mesures des capteurs arrivent à haute fréquence via MQTT et sont stockées temporairement dans des structures Redis Streams avant d'être agrégées et persistées dans PostgreSQL. Cette architecture découple l'ingestion rapide des données de leur traitement et stockage permanent.

Mise en œuvre

  1. Installation : installez Redis avec Docker (docker run -d redis:7) pour le développement. En production, installez Redis depuis les paquets officiels et configurez la persistance et la mémoire maximale.
  2. Configuration Django : installez django-redis et configurez le cache backend dans les settings Django. Définissez des caches nommés pour séparer les données de cache applicatif des sessions.
  3. Celery : configurez Celery pour utiliser Redis comme broker avec CELERY_BROKER_URL = 'redis://localhost:6379/0'. Utilisez des queues séparées pour les tâches prioritaires et les tâches batch.
  4. Politique de mémoire : configurez maxmemory pour limiter l'utilisation de la RAM et choisissez une politique d'éviction appropriée (allkeys-lru pour le cache, noeviction pour les données persistantes).
  5. Persistance : activez à la fois RDB et AOF en production. Configurez la fréquence des snapshots RDB et le mode de synchronisation AOF (everysec est un bon compromis entre performance et durabilité).
  6. Monitoring : utilisez redis-cli INFO pour surveiller l'utilisation mémoire, le hit rate du cache, les connexions et les commandes par seconde. Configurez des alertes sur la mémoire disponible et le hit rate.

Technologies et outils associés

  • Django : framework web de Kern-IT, intégré avec Redis via django-redis pour le cache et les sessions.
  • Celery : gestionnaire de tâches asynchrones qui utilise Redis comme broker de messages.
  • PostgreSQL : base de données relationnelle principale, complétée par Redis pour le cache.
  • Docker : conteneurisation de Redis pour des environnements de développement reproductibles.
  • FastAPI : framework API de Kern-IT, compatible avec Redis via aioredis pour les opérations asynchrones.
  • Elasticsearch : souvent utilisé avec Redis dans des architectures de recherche (cache des résultats fréquents).
  • Nginx : reverse proxy qui, combiné avec Redis, peut servir des réponses mises en cache sans atteindre l'application.

Conclusion

Redis est un outil polyvalent et performant qui occupe une place unique dans l'écosystème des bases de données. Sa capacité à fonctionner simultanément comme cache, broker de messages et store de données temps réel en fait un composant irremplaçable des architectures web modernes. Chez Kern-IT, Redis est présent dans la quasi-totalité de nos projets en production, accélérant nos applications Django, alimentant nos tâches asynchrones Celery et supportant nos fonctionnalités temps réel. Sa simplicité de mise en œuvre, combinée à ses performances exceptionnelles, en fait un investissement technique à forte valeur ajoutée pour toute application web qui vise l'excellence en matière de réactivité et de fiabilité.

Conseil Pro

Configurez toujours maxmemory et une politique d'éviction (allkeys-lru) sur vos instances Redis de cache pour éviter les problèmes de mémoire saturée. Pour le broker Celery, utilisez une instance Redis séparée avec noeviction pour garantir qu'aucune tâche ne soit perdue en cas de pic mémoire.

Un projet en tête ?

Discutons de comment nous pouvons vous aider à concrétiser vos idées.