Caches und Redis
Es ist wichtig, dass Ihre Apps schnell auf Benutzeranforderungen reagieren. Wenn eine Website langsam ist, werden Besucher schnell frustriert und verlassen sie, möglicherweise um Ihre Konkurrenten zu besuchen. Wie können Sie eine App erstellen, die schnell reagiert, auch wenn eine komplexe Datenmenge angefordert wird? Eine Möglichkeit zum Beschleunigen Ihrer App ist die Verwendung eines Caches.
Stellen Sie sich vor, Sie arbeiten für einen Outdoor-Händler. Ihre neue Web-App befindet sich in der Entwicklung, und mehrere Microservices nähern sich dem First Release, aber einige Seiten laden zu langsam. Sie möchten eine Möglichkeit finden, um die Leistung zu steigern.
In dieser Lerneinheit erfahren Sie, wie Caching dazu beitragen kann, die Geschwindigkeit einer Web-App zu steigern.
Was ist Redis?
Redis ist ein Open-Source- und In-Memory-Informationsspeicher. Der Name ist kurz für Remote Dictionary Server. Das vielleicht wichtigste Feature von Redis die entwurfsbedingt geringe Latenz sowohl für Lese- als auch Schreibvorgänge, sowie die Tatsache, dass alle Informationen im Arbeitsspeicher vorhanden sind. Redis umfasst Datenbank- und Nachrichtenbrokerfunktionen, ist aber allgemein als Cachingsystem anerkannt.
Wie ein Cache die Leistung verbessert
Caches können verwendet werden, um die Leistung vieler Systeme zu verbessern, die Zeit benötigen, um Antworten für die Benutzer zu generieren. Nehmen wir eine E-Commerce-Website als Beispiel, die aus Microservices besteht. Wenn ein Benutzer wissen möchte, welche Artikel im Warenkorb enthalten sind, könnte das System:
- die Anforderung im Web-App-Microservice empfangen
- den Microservice für Authentifizierung aufrufen, um die Identität der Benutzer zu überprüfen, wenn sie angemeldet sind
- den Microservice für den Warenkorb aufrufen, um herauszufinden, welche Artikel in welcher Anzahl sich im Warenkorb befinden
- den Microservice für den Produktkatalog aufrufen, um vollständige Details zu den einzelnen Produkten zu erhalten
- den Microservice für Bilder aufrufen, um Bildblobs für jedes Produkt abzurufen
- den Microservice für Bestandsaufnahme aufrufen, um den Lagerbestand zu überprüfen
- den Microservice für Versand aufrufen, um Versandkosten für den Standort und die Einstellungen des Benutzers zu berechnen
Die genauen Schritte können sich je nach Design und Geschäftsfunktionalität unterscheiden, aber Sie können sehen, dass der Prozess komplex sein kann und viele separate Microservices und unterstützende Dienste umfassen kann. Obwohl jeder Microservice so konfiguriert und mit Ressourcen ausgestattet werden sollte, dass er eine gute Leistung aufweist, dauert die Generierung der Antwort zwangsläufig einige Zeit.
Stellen Sie sich nun vor, dass der Benutzer die Seite aktualisiert. Anstatt die gesamte HTML-Antwort von Grund auf neu zu rekonstruieren, kann sie viel schneller als die ursprüngliche Anforderung zurückgegeben werden, wenn die Seite oder Teile davon in einem Cache gespeichert wurden. Diese schnelle Antwort hilft, eine Web-App für Benutzer reaktionsfähiger und einladender zu gestalten.
Überlegungen zum Cache
Beim Caching ist eine wichtige Entwurfsentscheidung, wie lange ein bestimmter Inhalt zwischengespeichert werden soll. Wenn Sie z. B. im Warenkorb die vollständige Seite für eine Stunde zwischengespeichert haben, während der wahrscheinlich andere Bestellungen aufgegeben werden, meldet die zwischengespeicherte Seite manchmal veraltete Lagerbestände, und die Benutzer müssen möglicherweise länger als erwartet auf die Lieferung warten. Wenn Sie die Seite nur für eine Minute zwischenspeichern, können Sie sicher sein, dass Lagerbestände genau sind, aber es gibt möglicherweise wenig bis gar keine Verbesserung der Leistung. Berücksichtigen Sie daher Folgendes, wenn Sie auswählen, wie lange Informationen zwischengespeichert werden sollen:
- Wie oft ändern sich die Informationen? Lagerbestände können sich beispielsweise in einer Stunde mehrmals ändern, aber neue Produkte werden nur alle paar Monate in den Katalog aufgenommen.
- Wie wichtig ist es, dass Benutzer die aktuellen Informationen sehen? Beispielsweise können Lagerbestände essenziell sein, aber Sie neue Produktbewertungen weniger zeitkritisch.
- Wie oft erhalten Sie wahrscheinlich Anforderungen für die Informationen? Das Zwischenspeichern beliebter Informationen führt zu einer Verbesserung der Leistung, da das System sie mehrmals aus dem Cache abrufen kann.
Verwenden von Redis in .NET Aspire-Projekten
Redis ist eine beliebte Option für Caching in einer cloudnativen Anwendung. .NET Aspire bietet drei Komponenten, mit denen Sie mit einem Redis-Dienst interagieren können:
- .NET Aspire StackExchange Redis-Komponente: Verwenden Sie diese Komponente, um direkt mit einem Redis-Server zu interagieren. Sie können sie beispielsweise verwenden, um Werte in Redis-Datenbanken zu speichern und abzurufen oder Nachrichten zu abonnieren, die an einen Kanal gesendet werden. Da sich diese Komponente nicht auf das Zwischenspeichern konzentriert, wird sie in diesem Modul nicht weiter berücksichtigt.
- .NET Aspire StackExchange Redis-Komponente für Ausgabecaching: Verwenden Sie diese Komponente, um vollständige HTTP-Antworten zwischenzuspeichern.
- .NET Aspire StackExchange Redis-Komponente für verteiltes Caching: Verwenden Sie diese Cachingkomponente, um Daten aus einem verteilten Cache zu speichern und abzurufen. Das verteilte Caching beschreibt eine Architektur, in der mehrere Microservices oder andere Clientdienste einen einzelnen Cache gemeinsam nutzen.