Cacheminnen och Redis
Det är viktigt att dina appar svarar snabbt på användarbegäranden. När en webbplats är långsam, besökare blir frustrerad snabbt och kommer att lämna din webbplats, kanske för att besöka dina konkurrenter. Hur kan du skapa en app som svarar snabbt, även när en komplex uppsättning data begärs? Ett sätt att påskynda din app är att använda en cache.
Anta att du arbetar för en återförsäljare av utomhusutrustning. Din nya webbapp är under utveckling och flera mikrotjänster närmar sig sin första version, men vissa sidor läses in för långsamt. Du vill hitta ett sätt att öka deras prestanda.
I den här lektionen får du lära dig hur cachelagring kan hjälpa till att öka hastigheten för en webbapp.
Vad är Redis?
Redis är ett minnesinternt informationslager med öppen källkod. Namnet är kort för Fjärrordlisteserver. Den kanske viktigaste funktionen i Redis är dess korta svarstid för både läs- och skrivåtgärder, vilket den uppnår genom sin design och det faktum att den innehåller all information i minnet. Redis innehåller funktioner för databas- och meddelandeköer men är allmänt känt som ett cachelagringssystem.
Så här förbättrar en cache prestanda
Cacheminnen kan användas för att förbättra prestandan för många system som tar tid att konstruera svar till sina användare. Överväg till exempel en webbplats för e-handel, som är konstruerad från mikrotjänster. När en användare vill veta vilka artiklar som finns i varukorgen kan systemet:
- Ta emot begäran i webbappens mikrotjänst.
- Anropa mikrotjänsten för autentisering för att kontrollera användarnas identitet om de är inloggade.
- Ring kundvagnens mikrotjänst för att ta reda på vilka artiklar och vilka kvantiteter som finns i korgen.
- Anropa produktkatalogens mikrotjänst för att få fullständig information om varje produkt.
- Anropa mikrotjänsten images för att hämta bildblobar för varje produkt.
- Ring lagertagandet mikrotjänst för att kontrollera lagernivåerna.
- Anropa mikrotjänsten för leverans för att beräkna fraktkostnader för användarens plats och inställningar.
De exakta stegen kan variera beroende på din design och dina affärsfunktioner, men du kan se att processen kan vara komplex och omfatta många separata mikrotjänster och stödtjänster. Även om varje mikrotjänst bör konfigureras och resurshanteras för att fungera bra, förbrukar konstruktionen av svaret oundvikligen lite tid.
Anta nu att användaren uppdaterar sidan. I stället för att rekonstruera hela HTML-svaret från grunden, om sidan eller delar av den hade lagrats i en cache, kan den returneras till användaren mycket snabbare än den ursprungliga begäran. Detta snabba svar hjälper till att göra en webbapp mer dynamisk och välkomnande för användare.
Cacheöverväganden
När du använder cachelagring är ett viktigt designbeslut hur länge ett visst innehåll ska cachelagras. I varukorgen, till exempel om du cachelagrade den färdiga korgsidan i en timme, under vilken andra beställningar sannolikt kommer att placeras, rapporterar den cachelagrade sidan ibland inaktuella lagernivåer och användarna kan behöva vänta längre än förväntat för leverans. Om du cachelagrade sidan i bara en minut kan du vara mer säker på att lagernivåerna kommer att vara korrekta, men du kan se lite eller ingen förbättring av prestanda. Tänk därför på följande när du väljer hur länge du ska cachelagrat information för:
- Hur ofta ändras informationen? Lagernivåerna kan till exempel ändras flera gånger på en timme, men nya produkter kan bara visas i katalogen med några månaders mellanrum.
- Hur viktigt är det att användarna ser aktuell information? Till exempel kan lagernivåer vara grundläggande, men du kan överväga nya produktrecensioner mindre tidskritiska.
- Hur ofta kommer du sannolikt att ta emot begäranden om informationen? Cachelagring av populär information ger en högre prestandaförbättring eftersom systemet kan hantera den från cacheminnet flera gånger.
Använda Redis i .NET Aspire-projekt
Redis är ett populärt val för cachelagring i ett molnbaserat program. .NET Aspire innehåller tre komponenter som du kan använda för att interagera med en Redis-tjänst:
- .NET Aspire StackExchange Redis-komponent: Använd den här komponenten för att interagera direkt med en Redis-server. Du kan till exempel använda den för att spara och hämta värden i Redis-databasen eller prenumerera på meddelanden som skickas till en kanal. Eftersom den här komponenten inte fokuserar på cachelagring kommer vi inte att överväga den ytterligare i den här modulen.
- .NET Aspire StackExchange Redis-cachelagringskomponent för utdata: Använd den här komponenten för att cachelagra fullständiga HTTP-svar.
- .NET Aspire StackExchange Redis distribuerad cachelagringskomponent: Använd den här cachekomponenten för att lagra och hämta data från en distribuerad cache. Distribuerad cachelagring beskriver en arkitektur där flera mikrotjänster eller andra klienttjänster delar en enda cache.
Läs mer
- Översikt över cachelagring i ASP.NET Core
- Självstudie: Implementera cachelagring med .NET Aspire-komponenter
- Grundläggande användning av StackExchange.Redis