Caches et Redis
Il est crucial que vos applications répondent rapidement aux demandes des utilisateurs. Lorsqu’un site web est lent, les visiteurs sont rapidement frustrés et quittent votre site, peut-être pour aller chez vos concurrents. Comment créer une application qui répond rapidement, même lorsqu’un ensemble complexe de données est demandé ? Une façon d’accélérer votre application consiste à utiliser un cache.
Imaginez que vous travaillez pour un détaillant d’équipements extérieurs. Votre nouvelle application web est en développement et la première version de plusieurs microservices est presque prête, mais certaines pages se chargent trop lentement. Vous souhaitez trouver un moyen d’augmenter leurs performances.
Dans cette unité, vous allez découvrir comment la mise en cache peut aider à booster la vitesse d’une application web.
Qu’est-ce que Redis ?
Redis est un magasin d’informations en mémoire open source. Son nom est la contraction de Remote Dictionary Server. La caractéristique la plus importante de Redis est peut-être sa faible latence pour les opérations de lecture et d’écriture, qu’il doit à sa conception et au fait qu’il contient toutes les informations en mémoire. Redis inclut des fonctionnalités de base de données et de répartiteur de messages, mais il est surtout connu comme système de mise en cache.
Comment un cache améliore les performances
Les caches peuvent être utilisés pour améliorer les performances de nombreux systèmes qui prennent du temps pour construire des réponses à retourner à leurs utilisateurs. Prenons l’exemple d’un site web d’e-commerce, construit à partir de microservices. Lorsqu’un utilisateur souhaite savoir quels articles se trouvent dans son panier d’achat, le système peut :
- Recevoir la demande dans le microservice de l’application web.
- Appeler le microservice d’authentification pour vérifier l’identité des utilisateurs s’ils sont connectés.
- Appeler le microservice de panier d’achat pour savoir quels articles et quelles quantités sont dans le panier.
- Appeler le microservice du catalogue de produits pour obtenir les détails complets de chaque produit.
- Appeler le microservice d’images pour obtenir les blobs d’images de chaque produit.
- Appeler le microservice de prise d’inventaire pour vérifier les niveaux de stock.
- Appeler le microservice de livraison pour calculer les frais de livraison pour l’adresse et les préférences de l’utilisateur.
Les étapes exactes peuvent varier selon vos fonctionnalités de conception et commerciales, mais vous pouvez voir que le processus peut être complexe et impliquer de nombreux microservices et services externes distincts. Même si chaque microservice doit être configuré et alimenté pour fonctionner correctement, la construction de la réponse prend inévitablement un certain temps.
Imaginez maintenant que l’utilisateur actualise la page. Au lieu de reconstruire l’intégralité de la réponse HTML à partir de zéro, si la page ou les différentes parties de celle-ci avaient été stockées dans un cache, elle aurait pu être retournée à l’utilisateur beaucoup plus rapidement que la demande d’origine. Cette réponse rapide permet de rendre une application web plus réactive et plus accueillante pour les utilisateurs.
Points à prendre en considération sur les caches
Lorsque vous utilisez la mise en cache, une décision de conception clé consiste à définir la durée pendant laquelle un élément de contenu donné est mis en cache. Dans le panier d’achat, par exemple, si vous avez mis en cache la page de panier terminée pendant une heure, au cours de laquelle d’autres commandes sont susceptibles d’être passées, la page mise en cache signale parfois des niveaux de stock obsolètes et les utilisateurs risquent de devoir attendre plus longtemps que prévu pour être livrés. Si vous mettez en cache la page pendant une minute seulement, vous pouvez être plus confiant sur l’exactitude des niveaux de stock, mais vous risquez de voir peu ou pas d’amélioration des performances. Par conséquent, lorsque vous choisissez la durée de mise en cache des informations, tenez compte des éléments suivants :
- À quelle fréquence les informations changent-elles ? Par exemple, les niveaux de stock peuvent changer plusieurs fois en une heure, tandis que les nouveaux produits peuvent apparaître dans le catalogue tous les trimestres uniquement.
- Est-il important que les utilisateurs voient les informations à jour ? Par exemple, les niveaux de stock peuvent être essentiels, mais vous pouvez considérer les nouveaux avis de produit moins indispensables.
- À quelle fréquence êtes-vous susceptible de recevoir des demandes d’informations ? La mise en cache des informations générales améliore les performances, car le système peut les servir à partir du cache plusieurs fois.
Utilisation de Redis dans les projets .NET Aspire
Redis est un choix répandu pour la mise en cache dans une application native cloud. .NET Aspire fournit trois composants que vous pouvez utiliser pour interagir avec un service Redis :
- Composant .NET Aspire StackExchange Redis : Utilisez ce composant pour interagir directement avec un serveur Redis. Par exemple, vous pouvez l’utiliser pour enregistrer et récupérer des valeurs dans la base de données Redis ou vous abonner à des messages envoyés à un canal. Étant donné que ce composant n’est pas axé sur la mise en cache, nous n’allons pas en parler davantage dans ce module.
- Composant de mise en cache de sortie .NET Aspire StackExchange Redis : Utilisez ce composant pour mettre en cache les réponses HTTP complètes.
- Composant de mise en cache distribuée .NET Aspire StackExchange Redis : Utilisez ce composant de mise en cache pour stocker et récupérer des données à partir d’un cache distribué. La mise en cache distribuée décrit une architecture où plusieurs microservices ou d’autres services clients partagent un seul cache.