Cas pratiques Redis

30 cas pratiques Redis disponibles. Niveaux : fondamental (10), avancé (10), expert (10).

Fait partie de : Cas pratiques de bases de données

FondamentalRedis

Correction d’un problème d’expiration TTL mal configurée

Contexte : Une application utilise Redis pour mettre en cache des sessions utilisateur. Le Problème : Les sessions n’expirent jamais, provoquant une accumulation excessive de clés. Extrait actuel : SET session:12345 user_data Aucune durée d’expiration n’est définie. Contraintes : Ajouter une expiration de 30 minutes sans modifier la structure des clés existantes. Les sessions actives doivent être renouvelées à chaque interaction utilisateur. Livrable attendu : Corriger l’implémentation afin d’ajouter un TTL approprié et éviter l’accumulation indéfinie de sessions en mémoire.

ttlsessionsbugfix+2
FondamentalRedis

Correction d’un problème de clé écrasée accidentellement

Contexte : Une application stocke des informations temporaires dans Redis pour différents utilisateurs. Le Problème : Toutes les données sont enregistrées sous la même clé. Extrait actuel : SET user_data {"name":"Alice"} Chaque nouvel utilisateur écrase la donnée précédente. Contraintes : Modifier la stratégie de nommage des clés pour garantir l’unicité par utilisateur. Conserver une structure simple et lisible. Livrable attendu : Corriger la gestion des clés Redis afin d’éviter les collisions et assurer l’isolation des données entre utilisateurs.

keysbugfixdata-isolation+2
FondamentalRedis

Correction d’un problème de mémoire dû à des clés sans expiration

Contexte : Le serveur Redis consomme de plus en plus de mémoire et atteint régulièrement sa limite. Le Problème : Certaines clés temporaires ne sont jamais supprimées. Extrait actuel : SET temp:data:123 value Aucun TTL n’est configuré. Contraintes : Identifier les clés temporaires et leur appliquer une expiration adaptée. Ne pas affecter les clés permanentes. Livrable attendu : Corriger la stratégie de gestion des clés afin de limiter l’utilisation mémoire et éviter la saturation du serveur Redis.

memoryttlbugfix+2
FondamentalRedis

Correction d’un problème de persistance non activée

Contexte : Après un redémarrage du serveur Redis, toutes les données sont perdues. Le Problème : Aucun mécanisme de persistance n’est configuré. Configuration actuelle : save "" La sauvegarde est désactivée. Contraintes : Activer une stratégie de persistance adaptée (RDB ou AOF). Minimiser l’impact sur les performances. Livrable attendu : Configurer Redis afin d’assurer une persistance minimale des données critiques en cas de redémarrage.

persistencerdbaof+2
FondamentalRedis

Correction d’une mauvaise utilisation de GET sur une clé inexistante

Contexte : Une application récupère des valeurs depuis Redis pour afficher des données utilisateur. Le Problème : Lorsqu’une clé n’existe pas, l’application génère une erreur inattendue. Extrait actuel : GET user:999 Aucune vérification n’est effectuée si la clé retourne null. Contraintes : Ajouter une gestion correcte des valeurs nulles. L’application ne doit pas planter en cas de clé inexistante. Livrable attendu : Corriger la logique d’accès aux clés Redis afin de gérer proprement les cas où la donnée n’existe pas.

error-handlingbugfixkeys+2
FondamentalRedis

Implémentation d’un cache simple pour accélérer une API

Contexte : Votre équipe développe une API qui interroge fréquemment une base de données pour récupérer des informations produits. Les temps de réponse commencent à augmenter sous forte charge. Le Problème : Les mêmes requêtes sont exécutées plusieurs fois par minute alors que les données changent rarement. Contraintes : Utiliser Redis comme cache clé-valeur. Définir une expiration automatique de 5 minutes. Ne pas modifier la structure de la base de données existante. Livrable attendu : Implémenter une logique de cache avec Redis permettant de stocker les réponses fréquentes et de réduire les appels répétés à la base de données.

cachekey-valueperformance+2
FondamentalRedis

Implémentation d’un système simple de blacklist avec Redis Set

Contexte : Votre application souhaite bloquer certaines adresses IP identifiées comme abusives. Le Problème : Aucun mécanisme rapide de vérification n’est en place pour savoir si une IP est bloquée. Contraintes : Utiliser une structure Set Redis pour stocker les IP blacklistées. Les vérifications doivent être rapides et efficaces. La solution doit permettre l’ajout et la suppression dynamique d’IP. Livrable attendu : Implémenter un système de blacklist basé sur Redis Set permettant de vérifier rapidement si une IP est interdite.

setblacklistperformance+2
FondamentalRedis

Implémentation d’une file simple avec Redis List

Contexte : Une application doit traiter des tâches asynchrones (envoi d’emails, notifications). Le Problème : Aucun système de file d’attente n’est actuellement en place. Contraintes : Utiliser les structures List de Redis (LPUSH, RPOP). Les tâches doivent être traitées dans l’ordre FIFO. La solution doit rester simple et adaptée à un environnement de petite taille. Livrable attendu : Mettre en place une file d’attente basique avec Redis permettant d’ajouter et consommer des tâches de manière fiable.

queuelistasync+2
FondamentalRedis

Mise en place d’un compteur de requêtes avec INCR

Contexte : Votre application souhaite limiter le nombre de requêtes par utilisateur pour éviter les abus. Le Problème : Aucun mécanisme simple de comptage n’est actuellement implémenté. Contraintes : Utiliser Redis et la commande INCR pour compter les requêtes par utilisateur. Réinitialiser automatiquement le compteur toutes les 60 secondes. Le système doit rester léger et performant. Livrable attendu : Implémenter un compteur basé sur Redis permettant de suivre le nombre de requêtes par utilisateur et facilitant l’implémentation d’un rate limiting basique.

rate-limitingincrcounter+2
FondamentalRedis

Mise en place d’un stockage temporaire avec expiration automatique

Contexte : Une application génère des codes temporaires de vérification pour les utilisateurs. Le Problème : Les codes doivent expirer automatiquement après un court délai. Contraintes : Stocker chaque code dans Redis avec une expiration de 5 minutes. Les clés doivent être uniques par utilisateur. Aucune base de données externe ne doit être utilisée. Livrable attendu : Implémenter un mécanisme de stockage temporaire sécurisé utilisant Redis avec gestion automatique du TTL.

ttltemporary-datacache+2
AvancéRedis

Conception d’un système de cache avec invalidation intelligente

Contexte : Votre application e-commerce utilise Redis pour mettre en cache les fiches produits afin d’améliorer les performances. Le Problème : Lorsqu’un produit est mis à jour (prix ou stock), le cache n’est pas invalidé immédiatement, ce qui provoque l’affichage de données obsolètes. Contraintes : Mettre en place une stratégie d’invalidation ciblée des clés impactées uniquement. Éviter la suppression globale du cache. Garantir la cohérence entre base de données et Redis. Livrable attendu : Proposer et implémenter un mécanisme d’invalidation sélective permettant de maintenir un cache performant tout en assurant la fraîcheur des données.

cacheinvalidationconsistency+2
AvancéRedis

Correction d’un problème de concurrence sur un compteur partagé

Contexte : Une application utilise Redis pour compter le nombre de téléchargements d’un fichier. Le Problème : Lors de fortes charges, le compteur affiche des valeurs incohérentes à cause d’opérations multiples non atomiques. Extrait actuel : GET downloads:file1 INCR downloads:file1 Cette séquence peut provoquer des conflits en cas d’accès simultané. Contraintes : Garantir l’atomicité des opérations. Maintenir les performances sous forte concurrence. Livrable attendu : Corriger l’implémentation afin d’assurer un comptage fiable même en environnement concurrent.

concurrencyatomicitycounter+2
AvancéRedis

Correction d’un problème de fragmentation mémoire Redis

Contexte : Malgré une utilisation mémoire modérée, Redis consomme beaucoup plus de RAM que prévu. Le Problème : Un taux de fragmentation élevé est observé dans les métriques système. Contraintes : Analyser la configuration actuelle. Optimiser la gestion mémoire (activer activedefrag si nécessaire). Maintenir la disponibilité du service. Livrable attendu : Proposer une configuration optimisée permettant de réduire la fragmentation mémoire et stabiliser l’utilisation des ressources.

memoryfragmentationoptimization+2
AvancéRedis

Correction d’un problème de mémoire lié aux clés volumineuses

Contexte : Le serveur Redis approche régulièrement de sa limite mémoire malgré une configuration maxmemory définie. Le Problème : Certaines clés contiennent des structures de données très volumineuses stockées sans contrôle. Contraintes : Identifier les clés les plus gourmandes en mémoire. Mettre en place une stratégie d’éviction adaptée (LRU ou LFU). Ne pas impacter les données critiques. Livrable attendu : Proposer une stratégie de gestion mémoire optimisée incluant configuration maxmemory-policy et bonnes pratiques de stockage.

memoryevictionoptimization+2
AvancéRedis

Correction d’un problème de réplication mal configurée

Contexte : Redis est configuré avec un master et un replica pour améliorer la disponibilité. Le Problème : Les lectures sur le replica retournent parfois des données obsolètes. Configuration actuelle : replica-read-only no Cela permet des écritures involontaires sur le replica. Contraintes : Garantir que seules les lectures soient autorisées sur le replica. Assurer la cohérence maximale possible. Livrable attendu : Corriger la configuration de réplication afin d’assurer un fonctionnement correct du modèle master-replica.

replicationconfigurationbugfix+2
AvancéRedis

Correction d’une mauvaise configuration de persistance AOF

Contexte : Redis est configuré avec AOF activé pour garantir la durabilité des données critiques. Le Problème : Les performances se dégradent fortement et le fichier AOF grossit rapidement. Configuration actuelle : appendonly yes appendfsync always Cette configuration impacte les performances. Contraintes : Ajuster la stratégie de synchronisation pour équilibrer performance et durabilité. Ne pas désactiver complètement la persistance. Livrable attendu : Proposer une configuration AOF optimisée permettant de réduire l’impact performance tout en maintenant un niveau de sécurité acceptable.

aofpersistenceconfiguration+2
AvancéRedis

Implémentation d’un système de leaderboard en temps réel

Contexte : Une application de jeu souhaite afficher un classement des meilleurs scores en temps réel. Le Problème : Le classement doit être mis à jour dynamiquement et permettre une récupération rapide du top 10. Contraintes : Utiliser les Sorted Sets Redis. Les scores doivent pouvoir être mis à jour fréquemment. Les requêtes de lecture doivent rester rapides même avec des milliers d’utilisateurs. Livrable attendu : Implémenter un leaderboard basé sur Sorted Sets permettant d’ajouter, mettre à jour et récupérer efficacement les meilleurs scores.

sorted-setleaderboardreal-time+2
AvancéRedis

Implémentation d’un système Pub/Sub pour notifications internes

Contexte : Une application nécessite un système léger pour envoyer des notifications en temps réel entre différents services. Le Problème : Aucun mécanisme de communication asynchrone interne n’est en place. Contraintes : Utiliser Redis Pub/Sub. Les messages ne doivent pas être persistés durablement. Les abonnés doivent recevoir les messages en temps réel. Livrable attendu : Implémenter un système simple de publication et d’abonnement permettant la diffusion de notifications entre services.

pubsubreal-timemessaging+2
AvancéRedis

Mise en place d’un mécanisme de verrou distribué simple

Contexte : Plusieurs instances d’une application tentent de modifier une même ressource partagée. Le Problème : Des conditions de course provoquent des incohérences dans les données. Contraintes : Implémenter un verrou distribué basé sur Redis (SET avec NX et expiration). Le verrou doit expirer automatiquement pour éviter les blocages permanents. Livrable attendu : Mettre en place un mécanisme de verrou distribué simple et sécurisé garantissant qu’une seule instance modifie la ressource à la fois.

distributed-lockconcurrencynx+2
AvancéRedis

Mise en place d’un système de rate limiting avancé par utilisateur

Contexte : Une API publique subit des abus réguliers malgré un système de limitation simple basé sur INCR. Le Problème : Le système actuel ne gère pas correctement les fenêtres glissantes et peut être contourné. Contraintes : Implémenter un rate limiting basé sur fenêtre glissante (sliding window) avec Redis. Limiter le nombre de requêtes par utilisateur sur 1 minute. Maintenir de bonnes performances. Livrable attendu : Concevoir un mécanisme de limitation avancé utilisant les structures Redis adaptées (Sorted Sets ou autres) pour améliorer la précision du contrôle.

rate-limitingsorted-setperformance+2
ExpertRedis

Conception d’une architecture Redis Cluster hautement disponible

Contexte : Votre application connaît une forte croissance et un seul nœud Redis ne suffit plus à absorber la charge. Des pics de trafic provoquent des latences élevées. Le Problème : L’instance actuelle est un point unique de défaillance et limite la scalabilité horizontale. Contraintes : Mettre en place un Redis Cluster avec partitionnement automatique des clés. Assurer la tolérance aux pannes avec réplication. Minimiser l’impact sur l’application existante. Livrable attendu : Proposer une architecture Redis Cluster détaillée incluant sharding, réplication, stratégie de failover et bonnes pratiques de configuration.

clusterhigh-availabilitysharding+2
ExpertRedis

Correction d’un problème de split-brain en environnement Sentinel

Contexte : Redis Sentinel est utilisé pour assurer le failover automatique. Le Problème : Lors d’une panne réseau, deux instances se sont considérées comme master, provoquant une divergence de données. Configuration actuelle : quorum 1 Le quorum est trop faible. Contraintes : Ajuster la configuration Sentinel pour éviter le split-brain. Garantir un quorum approprié et sécuriser l’élection du master. Livrable attendu : Proposer une configuration Sentinel robuste empêchant les scénarios de split-brain.

sentinelfailoverhigh-availability+2
ExpertRedis

Correction d’un verrou distribué vulnérable aux deadlocks

Contexte : Un mécanisme de verrou distribué basé sur SET NX est utilisé pour protéger une ressource critique. Le Problème : En cas de crash de l’application, le verrou peut rester actif indéfiniment, bloquant toutes les autres instances. Extrait actuel : SET lock:resource 1 NX Aucune expiration n’est définie. Contraintes : Ajouter une expiration sécurisée. Garantir que seul le propriétaire du verrou puisse le libérer. Prévenir les conditions de course. Livrable attendu : Corriger l’implémentation du verrou distribué afin d’éviter les deadlocks et renforcer sa robustesse.

distributed-lockconcurrencybugfix+2
ExpertRedis

Correction d’une faille d’accès non authentifié à Redis

Contexte : Une instance Redis est exposée sur le réseau interne sans authentification. Le Problème : Tout client réseau peut exécuter des commandes sensibles. Configuration actuelle : requirepass "" protected-mode no La sécurité est désactivée. Contraintes : Activer l’authentification et limiter l’accès réseau. Appliquer des ACL adaptées aux différents rôles applicatifs. Livrable attendu : Sécuriser l’instance Redis en configurant authentification, ACL et restrictions réseau afin d’empêcher tout accès non autorisé.

securityauthenticationacl+2
ExpertRedis

Correction d’une mauvaise stratégie de partitionnement des clés

Contexte : Dans un environnement Redis Cluster, certaines partitions sont surchargées alors que d’autres restent sous-utilisées. Le Problème : La distribution des clés n’est pas homogène, provoquant des déséquilibres de charge. Contraintes : Revoir la stratégie de nommage des clés pour améliorer le hash slot distribution. Minimiser les migrations de données. Livrable attendu : Proposer une stratégie de partitionnement des clés optimisée permettant une meilleure répartition de la charge sur le cluster.

clustershardingperformance+2
ExpertRedis

Détection et mitigation d’une attaque de type cache poisoning

Contexte : Une API publique met en cache certaines réponses utilisateurs dans Redis. Le Problème : Un utilisateur malveillant pourrait injecter des données incorrectes dans le cache et impacter d’autres utilisateurs. Contraintes : Sécuriser la génération des clés Redis. Isoler les données par utilisateur. Implémenter une validation stricte des entrées avant mise en cache. Livrable attendu : Proposer une stratégie sécurisée de gestion des clés et de validation pour prévenir les attaques de cache poisoning.

securitycachepoisoning+2
ExpertRedis

Implémentation d’un système de file fiable avec gestion des pannes

Contexte : Redis est utilisé comme système de file pour des tâches critiques. Le Problème : Si un worker crash après avoir consommé une tâche, celle-ci est perdue. Contraintes : Implémenter un mécanisme garantissant qu’une tâche ne soit supprimée définitivement qu’après traitement réussi. Gérer les reprises après crash. Livrable attendu : Concevoir une file fiable utilisant Redis (par exemple via BRPOPLPUSH ou Streams) garantissant la résilience en cas de panne.

queueresiliencestreams+2
ExpertRedis

Mise en place d’un système de cache multi-niveaux cohérent

Contexte : Une application critique utilise Redis comme cache, mais certaines incohérences apparaissent lors des mises à jour concurrentes. Le Problème : Le cache Redis et la base de données peuvent temporairement diverger, provoquant des lectures incohérentes. Contraintes : Implémenter une stratégie de cache-aside ou write-through robuste. Gérer les invalidations concurrentes. Minimiser l’impact sur les performances. Livrable attendu : Concevoir un mécanisme de cohérence cache/base de données adapté aux environnements fortement concurrents.

cacheconsistencyconcurrency+2
ExpertRedis

Mise en place d’une surveillance avancée et alerting Redis

Contexte : Redis est critique pour l’application mais aucune surveillance approfondie n’est configurée. Le Problème : Les problèmes de latence, fragmentation ou réplication ne sont détectés qu’après impact utilisateur. Contraintes : Mettre en place une surveillance des métriques clés (latence, mémoire, réplication, hit ratio). Configurer des alertes proactives. Livrable attendu : Proposer une stratégie complète de monitoring Redis permettant une détection anticipée des anomalies.

monitoringmetricsperformance+2
ExpertRedis

Optimisation avancée de la mémoire sous forte charge

Contexte : Redis fonctionne proche de sa limite mémoire dans un environnement à fort trafic. Le Problème : Des évictions fréquentes provoquent une dégradation des performances applicatives. Contraintes : Analyser les politiques d’éviction (LRU, LFU, allkeys, volatile). Identifier les structures de données volumineuses. Maintenir les données critiques en mémoire. Livrable attendu : Proposer une stratégie avancée de gestion mémoire incluant configuration optimale et refactorisation éventuelle des structures stockées.

memoryevictionoptimization+2

Questions originales conçues par CodeDuel. CodeDuel n'est affilié à aucun éditeur ni organisme de certification cité ; les noms de certifications et les marques appartiennent à leurs titulaires et servent uniquement à indiquer le domaine couvert. Signaler un contenu

    Cas pratiques Redis : 30 mises en situation | CodeDuel