Caches en Redis

Voltooid

Het is essentieel dat uw apps snel reageren op gebruikersaanvragen. Wanneer een website traag is, raken bezoekers snel gefrustreerd en verlaten ze uw site, misschien om uw concurrenten te bezoeken. Hoe kunt u een app maken die snel reageert, zelfs wanneer een complexe set gegevens wordt aangevraagd? Een manier om uw app te versnellen, is door een cache te gebruiken.

Stel dat u werkt voor een winkel voor buitenapparatuur. Uw nieuwe web-app is in ontwikkeling en verschillende microservices naderen hun eerste release, maar sommige pagina's laden te langzaam. U wilt een manier vinden om hun prestaties te verbeteren.

In deze les leert u hoe caching kan helpen om de snelheid van een web-app te verbeteren.

Wat is Redis?

Redis is een opensource-informatiearchief in het geheugen. De naam is een afkorting voor Remote Dictionary Server. Misschien is de belangrijkste functie van Redis de lage latentie voor zowel lees- als schrijfbewerkingen, die het behaalt vanwege het ontwerp en het feit dat alle informatie in het geheugen wordt opgeslagen. Redis bevat database- en berichtbrokerfunctionaliteit, maar wordt algemeen herkend als een cachingsysteem.

Hoe een cache de prestaties verbetert

Caches kunnen worden gebruikt om de prestaties van veel systemen te verbeteren die tijd in beslag nemen om reacties op hun gebruikers samen te stellen. Denk bijvoorbeeld aan een e-commercewebsite die is samengesteld op basis van microservices. Wanneer een gebruiker wil weten welke items zich in hun winkelwagen bevinden, kan het systeem het volgende doen:

  1. Ontvang de aanvraag in de microservice van de web-app.
  2. Roep de verificatiemicroservice aan om de identiteit van de gebruikers te controleren als ze zijn aangemeld.
  3. Roep de microservice van de winkelmand aan om erachter te komen welke artikelen en welke hoeveelheden er in de mand staan.
  4. Roep de microservice van de productcatalogus aan om volledige details van elk product te verkrijgen.
  5. Roep de afbeeldingen-microservice aan om afbeeldingsblobs voor elk product op te halen.
  6. Roep de inventarisatie-microservice aan om de voorraad te controleren.
  7. Roep de microservice voor verzending aan om de verzendkosten voor de locatie en voorkeuren van de gebruiker te berekenen.

De precieze stappen kunnen verschillen, afhankelijk van uw ontwerp en bedrijfsfunctionaliteit, maar u kunt zien dat het proces complex kan zijn en veel afzonderlijke microservices en back-upservices omvat. Hoewel elke microservice moet worden geconfigureerd en gebrond om goed te presteren, verbruikt de bouw van het antwoord onvermijdelijk enige tijd.

Stel nu dat de gebruiker de pagina vernieuwt. In plaats van het volledige HTML-antwoord helemaal opnieuw te reconstrueren als de pagina of gedeelten ervan in een cache zijn opgeslagen, kan het veel sneller worden geretourneerd aan de gebruiker dan de oorspronkelijke aanvraag. Deze snelle reactie helpt om een web-app responsiefer en gastvrijer te maken voor gebruikers.

Overwegingen voor cache

Wanneer u caching gebruikt, bepaalt een belangrijke ontwerpbeslissing hoe lang een bepaald deel van de inhoud in de cache moet worden opgeslagen. Als u in de winkelwagen bijvoorbeeld de pagina voltooide winkelwagen een uur in de cache hebt opgeslagen, terwijl andere orders waarschijnlijk worden geplaatst, zal de pagina in de cache soms verouderde voorraadniveaus rapporteren en moeten gebruikers mogelijk langer wachten dan verwacht voor levering. Als u de pagina slechts één minuut in de cache opneemt, kunt u er zeker van zijn dat voorraadniveaus nauwkeurig zijn, maar u ziet mogelijk weinig tot geen verbetering in de prestaties. Houd daarom rekening met het volgende wanneer u kiest hoe lang gegevens in de cache moeten worden opgeslagen:

  • Hoe vaak verandert de informatie? Voorraadniveaus kunnen bijvoorbeeld meerdere tijd in een uur veranderen, maar nieuwe producten kunnen slechts om de paar maanden in de catalogus worden weergegeven.
  • Hoe belangrijk is het dat gebruikers de up-to-datumgegevens zien? Aandelenniveaus kunnen bijvoorbeeld fundamenteel zijn, maar u kunt nieuwe productbeoordelingen als minder urgent beschouwen.
  • Hoe vaak ontvangt u waarschijnlijk aanvragen voor de informatie? Het opslaan van populaire informatie in de cache levert een hogere prestatieverbetering op, omdat het systeem het meerdere keren uit de cache kan leveren.

Redis gebruiken in .NET Aspire-projecten

Redis is een populaire keuze voor caching in een cloudeigen toepassing. .NET Aspire biedt drie onderdelen die u kunt gebruiken om te communiceren met een Redis-service:

  • .NET Aspire StackExchange Redis-onderdeel: gebruik dit onderdeel om rechtstreeks met een Redis-server te communiceren. U kunt deze bijvoorbeeld gebruiken om waarden op te slaan en op te halen in de Redis-database of om u te abonneren op berichten die naar een kanaal worden verzonden. Omdat dit onderdeel niet is gericht op caching, wordt dit in deze module niet verder overwogen.
  • .NET Aspire StackExchange Redis-uitvoercomponent: gebruik dit onderdeel om volledige HTTP-antwoorden in de cache op te cachen.
  • gedistribueerd cacheonderdeel .NET Aspire StackExchange Redis: gebruik dit cacheonderdeel om gegevens op te slaan en op te halen uit een gedistribueerde cache. Gedistribueerde caching beschrijft een architectuur waarbij meerdere microservices of andere clientservices één cache delen.

Meer informatie