Quel est le bon moment pour adopter Redis ?

Par 쉬었음.com

Redis est particulièrement adapté lorsque vous lisez très fréquemment les mêmes données, devez traiter rapidement et de façon atomique un état partagé de courte durée, et pouvez clairement maîtriser la perte temporaire de données ou les retards de fraîcheur pour certaines données. Les exemples courants comprennent les caches d’API fréquemment interrogées, les sessions de connexion, la limitation de débit, les classements, les jetons temporaires et le traitement d’événements en temps réel. À l’inverse, si toutes les données doivent être conservées durablement et que les requêtes relationnelles complexes, les pistes d’audit et une forte cohérence sont des exigences centrales, Redis n’est généralement pas un premier choix approprié comme base de données principale.

L’essentiel est de ne pas considérer Redis comme une simple « base de données rapide ». Redis est un magasin de données centré sur la mémoire qui fournit plusieurs structures de données — notamment des chaînes, des hachages, des ensembles, des ensembles triés et des Streams — ainsi que des opérations atomiques sur celles-ci. Une décision d’adoption ne doit donc pas commencer par la question de savoir si les temps de réponse moyens sont lents, mais par trois questions : quel état doit être conservé et pendant combien de temps, combien de requêtes le modifient simultanément, et qu’est-ce qui peut être perdu lors d’une panne ? Redis peut remplir plusieurs rôles, notamment le cache, les données documentaires et vectorielles, le streaming et la messagerie, mais chaque rôle exige une conception différente. Redis Open Source 소개 (redis.io)

Au 11 septembre 2026, pour évaluer l’adoption de Redis, il est plus juste de ne pas demander « Redis peut-il faire cela ? », mais « Le goulot d’étranglement que Redis doit résoudre peut-il être traité au moyen d’un état partagé en mémoire et d’opérations sur des structures de données ? »

La première question à répondre : quel problème réel survient sans Redis ?

Redis n’est pas un composant qui accélère tous les problèmes d’une application. La meilleure raison de l’adopter est l’existence d’un goulot d’étranglement observable ou d’une exigence fonctionnelle qui correspond directement à ses caractéristiques.

Redis peut être un candidat si les schémas suivants se répètent :

  • Les mêmes informations produit, profils utilisateur publics, valeurs de configuration ou réponses d’API sont lus de manière répétée des centaines ou des milliers de fois sur une courte période.
  • Plusieurs instances d’application doivent lire et mettre à jour des données à durée de vie limitée, comme l’état de connexion, les jetons de réinitialisation de mot de passe ou l’état temporaire d’un panier.
  • De nombreuses petites opérations doivent éviter les conditions de concurrence, comme « 100 requêtes par minute », « réserver uniquement si le stock est d’au moins une unité » ou « incrémenter le nombre de mentions J’aime d’exactement une unité ».
  • Vous devez traiter rapidement des collections, des scores ou des compteurs pour des classements, des priorités, de l’activité récente ou de la déduplication.
  • Avant d’introduire un grand broker distinct pour les tâches asynchrones ou la consommation d’événements, vous devez exploiter un flux de taille moyenne nécessitant rétention, retraitement et groupes de consommateurs.

À l’inverse, si la base de données est lente à cause de SQL inefficace, d’index absents, de corps de réponse trop volumineux, d’appels à des services distants ou de requêtes N+1 au niveau de l’application, Redis peut simplement masquer le symptôme au lieu d’éliminer la cause. Par exemple, si une recherche de produits prend 800 ms à cause de jointures pathologiques et de parcours complets de tables, le même problème persiste pour les nouveaux termes de recherche dont le taux de succès du cache est faible. Dans ce cas, améliorez d’abord les requêtes et les index.

Quelles sont les cinq conditions qui font de Redis un bon choix ?

La manière la plus pratique de décider consiste à vérifier si plusieurs des cinq conditions ci-dessous sont réunies simultanément. Redis est particulièrement susceptible d’apporter des bénéfices clairs lorsque les trois premières conditions s’appliquent.

1. La réutilisation des lectures est-elle élevée et la recherche à la source est-elle coûteuse ?

Redis réduit efficacement la charge liée à la lecture répétée de données avec des clés identiques ou similaires. Par exemple, les informations d’affichage des 1 000 produits les plus populaires — telles que le prix et l’état des stocks —, les réponses d’API de taux de change fréquemment appelées et les profils publics dont les autorisations changent rarement n’ont pas nécessairement besoin d’être récupérés depuis la base de données source à chaque requête.

Dans le modèle cache-aside, l’application vérifie d’abord Redis. Si une valeur existe, elle la renvoie ; ce n’est qu’en cas de cache miss qu’elle lit la base de données source et stocke le résultat dans Redis. Comme cette approche ne met en cache que les données effectivement demandées, elle permet de concentrer la mémoire non pas sur l’ensemble du jeu de données, mais sur le jeu de travail actif. La documentation Redis recommande cache-aside lorsque vous devez servir des lectures répétées avec une faible latence et réduire la surcharge de la base de données source. Redis 캐시 어사이드(Cache-Aside) 사용 사례 (redis.io)

Le résultat diffère lorsque la réutilisation est faible. Si chaque requête recherche une clé entièrement différente, Redis ajoute des allers-retours réseau, de la sérialisation et des coûts mémoire tout en réduisant à peine les lectures à la source. Avant l’adoption, examinez les métriques suivantes plutôt que le seul temps de réponse moyen :

  • La part du trafic total représentée par les principales clés ou routes API
  • L’intervalle entre des lectures répétées de la même clé
  • La latence P95 et P99 des recherches à la source, ainsi que le processeur de la base de données et l’utilisation du pool de connexions
  • Le taux de succès du cache attendu et la charge à la source lors des cache misses
  • La fréquence de modification des valeurs et le délai de fraîcheur acceptable

2. Les données ont-elles un point d’expiration naturel ?

Redis permet facilement de définir un TTL (Time To Live) par clé, ce qui le rend particulièrement adapté aux règles métier qui disent : « Ces données peuvent disparaître après une certaine période. » Parmi les exemples figurent les sessions de connexion, les codes de vérification à usage unique, les liens de vérification d’e-mail, les clés de déduplication de requêtes, les verrous temporaires pendant un processus de réservation et les résultats de recommandation de courte durée.

Par exemple, lors de l’émission d’un jeton de réinitialisation de mot de passe, vous pouvez stocker un identifiant utilisateur avec un TTL de 15 minutes à password-reset:{token}. Une fois ce délai écoulé, le jeton devient automatiquement invalide. Cela peut être plus simple qu’une conception qui nettoie les lignes expirées au moyen d’un traitement par lot distinct, et l’expiration elle-même devient une partie de la politique de sécurité.

Toutefois, la seule existence d’un TTL ne rend pas une conception sûre. Le TTL gère « le moment où quelque chose disparaît » ; il ne garantit pas que l’activité puisse fonctionner normalement après sa disparition. Par exemple, les utilisateurs peuvent pouvoir rajouter des articles si l’état du panier est perdu dans Redis, mais les enregistrements de paiement finalisés ne doivent pas disparaître. Cette distinction détermine si Redis doit être un magasin de soutien ou le système de référence.

3. Devez-vous mettre à jour atomiquement un petit état partagé ?

Lorsque plusieurs serveurs lisent et modifient simultanément la même valeur, il est difficile de préserver la correction avec le seul code applicatif. Les structures de données et les commandes atomiques de Redis peuvent simplifier ces problèmes.

Par exemple, la limitation de débit d’une API nécessite de compter les requêtes par utilisateur et de les bloquer une fois une limite dépassée. Lorsque plusieurs serveurs web traitent des requêtes simultanément, un flux conventionnel lecture-incrément-écriture peut créer des conditions de concurrence. Dans Redis, les compteurs, l’expiration et les scripts peuvent être combinés dans une seule opération cohérente. Les cas d’utilisation officiels de Redis citent également la limitation de débit par token bucket et le stockage de sessions fondé sur TTL comme modèles représentatifs. Redis 사용 사례 목록 (redis.io)

Un autre exemple consiste à réserver temporairement un coupon en quantité limitée. « Vérifier la quantité restante → décrémenter d’une unité → enregistrer la réservation par utilisateur » ne doit pas être interrompu entre les étapes. Les transactions Redis exécutent une séquence de commandes sans intercalage de commandes d’autres clients et fournissent MULTI, EXEC et WATCH. Cela ne signifie pas qu’elles remplacent toutes les contraintes de bases de données relationnelles, les annulations complexes ou les transactions longues. Redis 트랜잭션 문서 (redis.io)

4. La forme du problème correspond-elle directement à une structure de données Redis ?

Redis est davantage un serveur de structures de données qu’un simple cache clé-valeur. Plus la forme de vos données et les opérations requises correspondent étroitement, moins vous avez de code complexe de requête, de tri et de concurrence à écrire dans l’application.

Exigence métierStructure de données ou fonctionnalité appropriéePourquoi Redis est un choix convaincant
Stockage temporaire de résultats de requêteString, Hash, JSON, TTLLes lectures répétées par clé et l’expiration individuelle sont claires.
État de connexion et d’authentificationHash ou String, TTLPlusieurs instances partagent l’état et une expiration automatique est nécessaire.
Mentions J’aime, vues et quotasCompteur, Bitmap, HashLes opérations d’incrémentation, de décrémentation et de bits peuvent être traitées atomiquement.
Classements et priorités en temps réelSorted SetLe tri par score et les requêtes par plage correspondent à l’exigence principale.
Étiquettes, groupes d’autorisations et déduplicationSetL’appartenance et les opérations d’ensemble comme l’union et l’intersection sont nécessaires.
Enregistrements d’événements et traitement par consommateursStreamsL’ordre, la rétention, les groupes de consommateurs et le retraitement sont requis.
Agrégation approximativeStructures de données probabilistes telles que HyperLogLog et Bloom filterIl est acceptable d’échanger une part de précision contre l’efficacité mémoire.

Par exemple, au lieu d’agréger et de trier une table relationnelle pour « les 100 meilleurs scores et mon rang » à chaque requête, vous pouvez mettre à jour un ensemble trié lorsque les scores changent et y interroger les plages et les rangs. Cette conception exploite les points forts de Redis. À l’inverse, si les clients, commandes, produits et règles fiscales doivent être joints entre plusieurs tables et audités selon des conditions complexes, les avantages d’un modèle relationnel peuvent compter davantage que l’adéquation aux structures de données. Redis fournit de nombreux types, notamment des chaînes, hachages, ensembles, ensembles triés, Streams, séries temporelles et ensembles vectoriels ; chaque type implique différents compromis en matière de performances, de mémoire et de fonctionnalités. Redis 데이터 타입 비교 (redis.io)

5. Pouvez-vous expliquer ce qui peut être perdu lors d’une panne et comment cela sera récupéré ?

C’est la question la plus importante pour distinguer les organisations qui peuvent adopter Redis de celles pour lesquelles il est encore trop tôt. Redis prend en charge plusieurs stratégies de stockage, notamment les snapshots RDB, AOF (Append Only File), une combinaison des deux et l’absence de persistance. Mais activer la persistance ne signifie pas que chaque écriture sera sans perte dans tous les scénarios de défaillance. Le point de récupération et le temps de récupération varient selon les intervalles de snapshot, les paramètres AOF, le retard de réplication, la méthode de basculement et les procédures opérationnelles. Redis 영속성(RDB 및 AOF) (redis.io)

Avant l’adoption, vous devriez pouvoir terminer la phrase suivante :

« Si Redis redémarre ou bascule, un état récent peut disparaître. Dans ce cas, ce service va recalculer quoi depuis la source, demander aux utilisateurs de réessayer quoi, et ne jamais finaliser quoi en utilisant Redis seul. »

Si vous pouvez rédiger cette déclaration précisément, Redis est probablement bien adapté. Si vous ne le pouvez pas, définissez d’abord les frontières de propriété des données.

À quel moment l’adoption d’un cache est-elle la plus appropriée ?

Le moment le plus typique pour adopter Redis est lorsque la charge de lecture sur la base de données source limite la capacité de mise à l’échelle du service, mais qu’il est acceptable qu’une partie de la réponse soit légèrement obsolète pendant un court délai.

Prenez une page de détail produit dans une boutique en ligne. Les noms de produits, descriptions, URL d’images et évaluations moyennes peuvent être lus des milliers de fois par seconde, tandis que les mises à jour sont relativement peu fréquentes. Dans ce cas, vous pouvez mettre les données produit en cache dans Redis pendant plusieurs minutes et supprimer la clé de cache concernée après la réussite d’une mise à jour produit. La lecture suivante récupère la valeur actuelle depuis la source et la remet en cache.

Le point essentiel de ce modèle est que le cache est une copie de la source. La séquence d’écriture est généralement conçue comme suit :

  1. Valider la modification dans la base de données source.
  2. Supprimer la clé Redis associée ou la mettre à jour avec la nouvelle valeur.
  3. Lorsqu’une lecture ultérieure provoque un cache miss, lire la source et remplir de nouveau le cache.

Si vous ne vous appuyez que sur le TTL et omettez l’invalidation, vous pouvez renvoyer des valeurs obsolètes jusqu’à l’expiration du TTL après une mise à jour. À l’inverse, si vous mettez à jour le cache sans condition à chaque écriture, vous devez gérer séparément les échecs de mise à jour, les inversions d’ordre et la cohérence entre plusieurs clés. La documentation Redis sur cache-aside décrit l’utilisation d’un TTL pour limiter l’âge maximal des valeurs obsolètes et une invalidation explicite avec DEL lors des écritures. (redis.io)

Pourquoi les avalanches de cache doivent-elles faire partie de la décision d’adoption ?

Lorsqu’une clé populaire expire simultanément pour de nombreuses requêtes, elles peuvent toutes se précipiter vers la base de données source. C’est ce qu’on appelle une avalanche de cache. Redis peut donc créer le paradoxe d’exercer une pression accrue sur la source précisément au moment de l’expiration alors qu’il tente de résoudre un problème.

Si vous avez besoin d’une ou plusieurs des mesures suivantes, un cache Redis exige une conception plus avancée que de simples GET et SET :

  • Ajouter une variation aléatoire aux délais d’expiration afin que les clés ne disparaissent pas toutes en même temps.
  • N’autoriser qu’une seule requête à recalculer depuis la source, tandis que les autres attendent brièvement ou utilisent la valeur précédente.
  • Exécuter un processus qui actualise les valeurs à l’avance.
  • Limiter séparément le coût de recalcul de certaines clés très sollicitées.

Ainsi, un trafic de lecture élevé ne suffit pas. La mise en cache Redis ne devient un bénéfice opérationnel qu’après avoir déterminé si la source peut supporter des cache misses simultanés.

Pourquoi Redis convient-il aux sessions, aux jetons et à la limitation de débit ?

Ces trois domaines partagent les caractéristiques d’une « courte durée de vie », d’un « partage entre plusieurs serveurs » et d’une « validation ou mise à jour rapide ». Si les sessions sont stockées dans la mémoire du serveur d’application, l’état de connexion peut différer selon le serveur qui reçoit une requête lorsqu’il y a plusieurs serveurs. L’utilisation de Redis comme magasin de sessions central partagé peut réduire ce problème.

Toutefois, l’adoption d’un magasin de sessions a aussi des limites :

  • Les utilisateurs peuvent-ils se reconnecter pendant une indisponibilité de Redis ?
  • La perte de sessions pourrait-elle causer des problèmes de paiement, une élévation de privilèges ou des litiges juridiques ?
  • L’isolation réseau, les ACL, TLS et la gestion des secrets sont-ils en place pour éviter le vol de sessions ?
  • Les espaces de clés ont-ils été séparés par utilisateur ou locataire, et les autorisations ont-elles été réduites au minimum ?

Redis est conçu pour que des clients de confiance y accèdent dans un environnement de confiance et recommande de ne pas exposer directement les instances à Internet. Depuis Redis 6, les ACL peuvent restreindre l’accès aux commandes et aux clés par utilisateur, et TLS peut être utilisé pour les connexions client, la réplication et le bus de cluster. Redis 보안 모델과 ACL·TLS (redis.io)

Redis convient également à la limitation de débit, mais vous devez définir ce que signifie la limite. Par exemple, une limite sur les tentatives de connexion échouées est un contrôle de sécurité ; vous avez donc besoin d’une politique indiquant s’il faut assouplir les limites lors d’une indisponibilité de Redis ou, au contraire, bloquer toutes les requêtes. Ce n’est pas seulement une question technique, mais une question de tolérance au risque du service.

Quand pouvez-vous choisir Redis pour les files de tâches et la messagerie en temps réel ?

Redis peut aussi être utilisé pour les files d’attente et la messagerie, mais dans ce domaine, les garanties de livraison et les exigences de retraitement comptent davantage que le terme « temps réel ».

Pub/Sub est simple pour diffuser immédiatement des événements aux abonnés connectés. Toutefois, son modèle de livraison est au plus une fois. Si un abonné manque un message à cause d’une déconnexion réseau ou d’une erreur de traitement, ce message n’est pas livré de nouveau et peut être perdu. Il convient donc à des usages tels que les notifications de rafraîchissement d’interface ou les signaux qui n’importent qu’aux utilisateurs actuellement en ligne. Redis Pub/Sub 문서 (redis.io)

Redis Streams, en revanche, prend en charge l’ajout d’événements, la lecture ordonnée, les périodes de rétention, les groupes de consommateurs et les accusés de réception. Si vous devez retrouver et retraiter un travail qu’un worker n’a pas accusé avant de s’arrêter, ou si plusieurs groupes de consommateurs doivent chacun lire le même événement, Streams est mieux adapté. La documentation Redis décrit Streams comme un journal en ajout seul avec un ordre et explique que les groupes de consommateurs peuvent gérer une livraison au moins une fois. Redis Streams 문서 (redis.io)

Cependant, la présence de Streams ne signifie pas que Redis peut remplacer une plateforme d’événements quelle que soit son échelle ou son importance. Si vous exigez une rétention de longue durée, un débit extrêmement élevé, des politiques de retraitement complexes, des résultats métier proches d’un traitement exactement une fois ou des contrats de données indépendants entre de nombreux systèmes, évaluez des journaux ou brokers dédiés aux côtés de bases de données durables. En particulier, pour des travaux tels que l’approbation de paiements, les écritures comptables et la confirmation de commandes — pour lesquels le traitement en double comme la perte sont critiques — la conception doit inclure des clés d’idempotence, des enregistrements source et des procédures de compensation, pas seulement une méthode de livraison des messages.

Que devez-vous distinguer avant de faire de Redis votre base de données principale ?

Comme Redis prend en charge la persistance et la réplication, il peut servir de magasin principal pour certains services. Toutefois, « il peut stocker des données » et « il est judicieux de lui confier la responsabilité finale de ces données » sont deux jugements différents.

Plus les exigences suivantes sont fortes, plus vous devez traiter Redis seul avec prudence comme système de référence :

ExigencePourquoi Redis seul peut être désavantageuxOrientation par défaut plus sûre
Rétention sans perte à long termeLe coût mémoire, la configuration de persistance et les procédures de récupération deviennent des responsabilités directes.Utilisez une base de données axée sur la durabilité comme source et Redis comme couche de soutien.
Jointures complexes et recherche conditionnelle arbitraireLes relations et requêtes peuvent devoir être assemblées dans l’application.Utilisez en parallèle un magasin relationnel ou orienté recherche.
Audit, réglementation et historique des correctionsVous devez suivre ce qui a changé, quand et comment.Maintenez un magasin source avec des politiques claires d’historique des changements et de sauvegarde.
Invariants sur plusieurs enregistrementsLes contraintes et annulations entre plusieurs entités sont complexes.Évaluez d’abord un magasin dont le modèle transactionnel satisfait l’exigence.
Jeu de données beaucoup plus grand que la RAMLe coût et la planification de capacité nécessaires pour tout conserver en mémoire deviennent difficiles.Déplacez seulement les données chaudes vers Redis et conservez le reste dans la source.

La réplication Redis repose sur un modèle leader-follower et peut être utilisée pour mettre à l’échelle les lectures et améliorer la disponibilité. Mais disposer d’une configuration de réplication ne résout pas automatiquement la sécurité des données lors de pannes. La documentation Redis avertit aussi contre les configurations combinant la réplication avec un nœud principal dont la persistance est désactivée lorsque la sécurité des données est importante. Redis 복제와 장애 조치 고려사항 (redis.io)

En pratique, le principe suivant est sûr : enregistrez les faits définitifs relatifs aux commandes, paiements, contrats et autorisations dans une source durable, et utilisez Redis pour l’état qui permet des lectures rapides ou une coordination de courte durée autour de ces faits. Par exemple, finalisez la véritable déduction de stock dans une transaction source tout en confiant à Redis le traitement des réservations temporaires, des files d’admission et des caches de lecture lors des pics d’achat.

Pouvez-vous ajouter Redis Cluster plus tard lorsque le trafic augmente ?

Pas toujours. Redis Cluster est une option importante pour la mise à l’échelle horizontale, mais il affecte la conception des clés et les opérations sur plusieurs clés. Dans Redis Open Source Cluster, lorsque plusieurs clés sont utilisées ensemble dans une commande, une transaction ou un script Lua, ces clés doivent être dans le même hash slot. Des clés associées peuvent être placées dans le même slot en utilisant le même hash tag. Par exemple, user:{42}:profile et user:{42}:limits partagent le même tag. Redis Cluster 확장 및 다중 키 연산 제약 (redis.io)

Mais placer le même tag sur chaque clé concentre les données et le trafic dans un seul slot, ce qui fait perdre les bénéfices de la distribution. Un cluster ne consiste donc pas simplement à ajouter des serveurs ; il exige de décider les points suivants :

  • Quelles clés doivent être utilisées ensemble dans la même requête ?
  • Ces clés sont-elles suffisamment couplées pour justifier leur placement dans le même slot ?
  • Les opérations sur plusieurs clés peuvent-elles être transformées en modèle à clé unique ?
  • Les clients peuvent-ils réessayer les erreurs transitoires pendant le resharding et le basculement ?
  • Des valeurs légèrement obsolètes provenant de lectures sur réplique sont-elles acceptables ?

De nombreux services sont correctement servis par une instance unique au départ. Mais si plusieurs clés d’un utilisateur ou d’une commande doivent toujours être traitées atomiquement et que vous prévoyez un futur cluster, concevoir des conventions de nommage de clés dès le début réduit les coûts de migration.

Pourquoi les limites mémoire et les politiques d’éviction sont-elles des exigences fonctionnelles ?

Dans Redis, la mémoire est à la fois un coût et une politique de rétention des données. Lorsque maxmemory est atteint, le comportement du service change selon que les nouvelles écritures sont rejetées, que les clés les moins récemment utilisées sont évincées ou que seules les clés avec TTL sont évincées. En d’autres termes, une politique d’éviction n’est pas une option de performance qu’un opérateur peut régler ultérieurement ; c’est une politique produit qui détermine quelles données les utilisateurs peuvent perdre.

Par exemple, une ancienne entrée de cache de profil peut être évincée parce que la requête suivante peut la récupérer depuis la source. Dans ce cas, l’éviction est naturelle. Mais si un compteur de limitation de débit est évincé de façon inattendue, la limite peut être contournée, et si les données d’une file de tâches sont évincées, du travail peut être perdu. Dans ces derniers cas, vous avez besoin d’une planification de capacité suffisante, d’instances ou bases de données isolées, ainsi que de politiques appropriées de rejet ou de backpressure.

Redis fournit des politiques d’éviction basées sur LRU, LFU et TTL pour toutes les clés ou uniquement les clés avec expiration, ainsi que des politiques qui n’évinceraient pas et rejettent plutôt les nouvelles écritures. Si des valeurs requises ne doivent pas être évincées, ne décidez pas simplement de « les mettre dans Redis même si ce n’est pas un cache ». Définissez explicitement comment ces données seront protégées lorsque les limites mémoire seront atteintes. Redis 데이터 제거 정책 (redis.io)

Quand vaut-il mieux ne pas adopter Redis ?

Dans les situations suivantes, il est préférable de réduire la priorité de Redis même s’il paraît attrayant.

Lorsque vous n’avez pas encore mesuré la recherche à la source

Si vous ajoutez Redis uniquement sur l’hypothèse vague que « la base de données sera probablement lente », vous créez une nouvelle complexité autour des clés de cache, des TTL, de l’invalidation et de la gestion des pannes. Mesurez d’abord les chemins lents, les taux de lectures répétées et la charge de la base de données.

Lorsque vous ne devez jamais renvoyer de valeurs obsolètes

Si une fraîcheur momentanée peut modifier des résultats juridiques ou financiers pour les prix, soldes, autorisations ou stocks, vous devez définir des conditions extrêmement strictes pour l’utilisation de valeurs mises en cache. Si vous ne pouvez pas tolérer les échecs d’invalidation ou le retard de réplication, vous pouvez avoir besoin d’un chemin lisant directement la source.

Lorsque les données sont volumineuses, froides et doivent être conservées à long terme

Conserver de grands volumes de données historiques rarement consultées dans un magasin centré sur la RAM peut ne pas être économique. Il est généralement plus approprié de ne conserver dans Redis que les données actuellement chaudes.

Lorsque vous n’êtes pas prêt à assumer la responsabilité opérationnelle

Bien que Redis soit lui-même facile à installer, son exploitation est une autre affaire. Vous devez surveiller l’utilisation mémoire, le taux de croissance des clés, l’expiration et l’éviction, le nombre de connexions, l’état de réplication, la sauvegarde et la récupération, le basculement, la sécurité et les autorisations de commandes. En particulier, évitez l’exposition aux réseaux publics et concevez un contrôle d’accès qui inclut les frontières réseau, les ACL et TLS. (redis.io)

Lorsque votre modèle de distribution exige un examen de licence

La licence Redis Open Source varie selon les versions. Selon les informations de licence de Redis, Redis 8 et versions ultérieures utilisent un modèle à triple licence proposant RSALv2, SSPLv1 ou AGPLv3, tandis que Redis 7.2 et versions antérieures utilisent BSD-3-Clause. Un examen de conformité juridique et open source est particulièrement nécessaire si vous distribuez Redis dans le cadre d’un produit ou le proposez comme service managé. Il s’agit d’une condition d’adoption distincte de l’adéquation technique. Redis 라이선스 개요 (redis.io)

Quelle petite expérimentation devez-vous réaliser avant l’adoption ?

Redis a davantage de chances de réussir lorsqu’il est validé sur un problème étroit plutôt que par un remplacement à grande échelle. La meilleure expérience initiale est un cache de lecture dont les données source sont claires, qui peut être régénéré depuis la source en cas d’échec et dont les effets peuvent être mesurés numériquement.

La séquence suivante facilite la décision :

  1. Choisissez une cible. Une route présentant des lectures répétées évidentes — comme les détails de produits populaires, une configuration publique ou une réponse d’API intensive en lecture — convient bien.
  2. Définissez la source. Indiquez clairement où la valeur correcte peut être relue si Redis est vide ou indisponible.
  3. Documentez les règles de clé, TTL et invalidation. Par exemple : product:{id}:view, un TTL de cinq minutes et une suppression immédiate après une mise à jour réussie du produit.
  4. Définissez le comportement en cas de panne. Décidez s’il faut revenir à la source lors des délais d’attente Redis, autoriser de manière limitée des valeurs obsolètes ou échouer la requête.
  5. Ajoutez une protection contre les avalanches. Envisagez une stratégie de verrouillage ou single-flight pour empêcher la régénération concurrente de clés très sollicitées.
  6. Définissez à l’avance les critères de mesure. Suivez conjointement le taux de succès du cache, le processeur et le nombre de requêtes de la base source, la latence P95 et P99, le taux d’erreur, la mémoire Redis et le nombre d’évictions.
  7. Isolez les données par rôle. Il est plus sûr de ne pas mélanger caches et données importantes de session ou de file sous la même limite mémoire et politique d’éviction.

Si cette expérience produit un taux de succès élevé mais ne réduit pas la charge de la source, examinez la conception des clés ou les chemins de repli. À l’inverse, même un taux de succès un peu plus faible peut améliorer fortement la latence P99 en bloquant les requêtes source les plus coûteuses. En définitive, le critère de succès n’est pas le débit de Redis lui-même, mais dans quelle mesure il réduit les goulots d’étranglement dans les chemins de requête utilisateur et les systèmes source.

Conclusion : Redis est approprié lorsque vous avez besoin d’une couche d’état temporaire contrôlable, pas seulement d’une « boîte de stockage rapide »

Le meilleur moment pour adopter Redis est lorsque les lectures répétées, les courtes durées de vie, les changements d’état atomiques, les opérations centrées sur les structures de données ou le traitement d’événements à moyenne échelle sont devenus de véritables goulots d’étranglement dans un service. À ce stade, Redis peut réduire le travail de la base de données source, simplifier l’état qui doit être partagé entre plusieurs serveurs et vous permettre de résoudre les problèmes de classement, de compteur, d’ensemble et de flux avec des structures de données directes.

Toutefois, Redis n’apporte de la valeur que si l’invalidation, l’expiration, les limites mémoire, l’éviction, la réplication, la récupération après panne et le contrôle d’accès sont conçus ensemble. Le point de départ le plus sûr consiste à conserver un système source contenant les faits définitifs, tout en validant à petite échelle un cache de lecture régénérable ou un élément d’état à TTL naturel. Selon les résultats, vous pourrez décider d’étendre le rôle de Redis aux sessions, à la limitation de débit, aux classements, aux files d’attente et aux streams — une approche qui évite une complexité inutile.

Questions fréquentes

Redis doit-il être utilisé uniquement comme cache ?

Non. Il peut aussi convenir aux sessions basées sur un TTL, aux compteurs atomiques et à la limitation de débit, aux classements, à l’état partagé de courte durée et au traitement de tâches à moyenne échelle avec Streams. Toutefois, le périmètre acceptable de perte de données et les exigences de récupération doivent être évalués séparément pour chaque cas d’utilisation.

Si la base de données est lente, faut-il toujours placer Redis devant ?

Non. Identifiez d’abord les causes, telles que les requêtes lentes, les index manquants, les transferts de données excessifs, les requêtes N+1 ou les connexions saturées. La mise en cache avec Redis est particulièrement efficace lorsque les lectures répétées constituent le véritable goulot d’étranglement et qu’un léger retard de fraîcheur, maîtrisé, est acceptable.

Redis peut-il être utilisé en toute sécurité comme magasin de sessions ?

Cela dépend des caractéristiques des sessions. Il fonctionne bien pour des données dont la durée de vie est naturellement courte et gérée par TTL, telles que les sessions web récupérables par une nouvelle authentification. Mais si une panne ou une expiration de Redis peut directement entraîner une perte juridique ou financière, il est plus sûr d’utiliser un système durable comme système de référence et de concevoir Redis comme une couche de soutien.

Faut-il choisir Pub/Sub ou Redis Streams ?

Pub/Sub est plus simple lorsque vous devez notifier immédiatement des abonnés connectés et qu’il est acceptable que les abonnés hors ligne manquent des messages. Si vous avez besoin de rétention des messages, de retraitement, d’un état de progression par consommateur ou d’une livraison au moins une fois, envisagez Streams.

Que faut-il concevoir à l’avance lors de l’utilisation de Redis Cluster ?

Examinez d’abord les noms de clés et les opérations sur plusieurs clés. Dans Redis Open Source Cluster, les clés utilisées ensemble dans une commande, une transaction ou un script Lua doivent se trouver dans le même hash slot ; des hash tags peuvent donc être nécessaires. L’utilisation indiscriminée de hash tags peut nuire à la distribution des clés.