This is the Trace Id: 72ff7154a3eb5e6d26c9636a3ca2f54e
Gå till huvudinnehåll
Azure
tonad bakgrund

Vad är cachelagring?

Lär dig hur cachelagring förbättrar systemprestanda och effektivitet.

Cachelagringens betydelse

Cachelagring sparar återanvändbara kopior av data som används ofta i minnet så att program undviker upprepade databasanrop och returnerar resultat snabbare.

Viktiga lärdomar

  • Cachelagring lagrar data som efterfrågas ofta i snabbt minne så att appar kan svara snabbare utan att behöva gå mot den primära databasen varje gång.
  • En typisk begäran kontrollerar först cachen, hämtar sedan från källlagringen vid miss och uppdaterar cachen med vanliga läs- och skrivmönster.
  • När den används på rätt sätt minskar cachelagring svarstiden och belastningen på serverdelen, hjälper till att hantera trafiktoppar och stöder vanliga scenarier som webbplatser, API:er och sessionsstatus.
  • Cachelagring finns på flera nivåer, och det fungerar bäst när du väljer stabil data med hög läsfrekvens och behåller en pålitlig sanningskälla med en reservplan.

Förstå cachelagring

Vad är en cache?

Cachelagring är praxis att lagra nyckel-värde-data i tillfälligt minne (till exempel en icke-relationell strukturerad frågedatabas NoSQL-databas) så att appar kan hämta den snabbare än de skulle kunna från konventionell lagring. I molnlagringsarkitekturer där begäranden ofta går över nätverk och använder delade tjänster kan cachelagring bidra till kortare svarstider och minska upprepade arbetsmoment.

Hur fungerar cachelagring?

De flesta system behåller en hållbar sanningskälla (en databas) för kompletta datamängder och behåller sedan en cache för tillfälliga delmängder som läses ofta. När en begäran kommer in kontrollerar applikationen först cachen. Om data finns där returneras den snabbt utan att serverdelen behöver frågas igen. Utvecklare cachelagrar också bearbetad data och återanvänder den för att hantera begäranden snabbare än vanliga frågor mot relationsdatabaser, SQL-databaser eller öppen källkod- PostgreSQL-databaser.

Grundläggande principer bakom cachelagring

1. Cacha sådant du läser ofta

Bra kandidater är data som läses upprepade gånger och data som ändras sällan (till exempel produkt- och prisinformation eller delade statiska resurser som är kostsamma att skapa).

2. Cacha resultat av upprepat arbete

Om en åtgärd transformerar data eller utför en komplicerad beräkning kan du cachelagra resultatet för att slippa räkna om det vid senare begäranden.

3. Använd cachelager vid behov

Utvecklare använder cacheminnen på flera nivåer (“cachelager”) för att lagra olika typer av data i separata cacheminnen baserat på efterfrågan. Om du lägger till ett eller flera cachelager kan du förbättra genomströmning och svarstid i ett datalager.

4. Håll sessionsstatus nära för responsiva appar

Minnesbaserade lagringstjänster används ofta för att hålla stora mängder sessionsdata, till exempel användarinmatning, varukorgsobjekt eller inställningar för anpassning, under korta perioder. För tillståndsberoende appar lagrar team också sessionsstatus i cachen så att appen kan vara tillståndslös.

Påverkan på systemets prestanda

Cachelagring kan förbättra prestandan på några konkreta sätt:

  • Det går snabbare att läsa data från en minnescache än från ett lager på disk.
  • Färre frågor kan minska belastningen och begränsa behovet av att skala databasinfrastrukturen, vilket också kan minska kostnaderna.
  • Cachelager kan förbättra dataflöde och svarstid, och minnesinterna cacheminnen kan minska svarstiden vid toppar i användningen.
  • En cacheinstans kan hantera miljontals begäranden per sekund och erbjuda en genomströmning som många databaser inte kan matcha.

Hur fungerar cachelagring?

Det grundläggande flödet: Cache + källdatalager

I många molndesign finns en cache bredvid ett primärt datalager (till exempel en databas). Den primära lagringen innehåller den fullständiga, hållbara datamängden på molnservern, medan cachen behåller en mindre, tillfällig delmängd som går snabbare att läsa.

En vanlig konfiguration är ett fristående cachelager eller ett cacheminne som finns inom den app- eller databasnivå—som valts baserat på var du behöver snabba läsningar.

Cachelager: Mer än en ''snabb väg''

Vissa system använder cachelagring i flera nivåer (“cache-lager”) så att olika typer av data finns i olika cacheminnen baserat på efterfrågan. Om du lägger till ett eller flera cachelager kan du förbättra dataflödet och svarstiden för datalagret och minska den totala kostnaden genom att minska belastningen på serverdelen.

Vad som cachas (och varför)

Teams cachelagrar vanligtvis data som hamnar i några bucketar:

  • Ofta lästa data (särskilt om de ändras sällan), till exempel produkt- eller prisinformation och delade statiska resurser som är kostsamma att skapa.
  • Upprepade beräkningar, där en åtgärd transformerar data eller utför en komplicerad beräkning och cachelagrar resultatet, undviker att göra samma arbete igen för senare begäranden.
  • Sessionstillstånd för tillståndsberoende appar, där lagring av sessionstillstånd i cachen kan hjälpa till att hålla app-lagret tillståndslöst.

Vanliga cachelagringsmönster (läs-/skrivarbetsflöden)

Det finns flera vanliga sätt för applikationerna att läsa från och skriva till en cache. Här är de vanligaste mönstren och vad de innebär i praktiken.

  • Cache-aside: Läs in data vid behov från en datalagring.
  • Läsningsdataflöde: Läs från cachen, och cachen hämtar från datalagringen vid behov.
  • Skrivningsdataflöde: Skriv till cachen, och den synkroniseras med datalagringen direkt.
  • Tillbakaskrivning: Skriv till cachen, och den skriver tillbaka till datalagringen i batchar.
  • Omskrivning: Skriv till datalagringen och läs från cachen; cachen uppdateras vid behov.

Varför detta minskar belastningen och påskyndar saker och ting

Genom att använda cachelager kan du förbättra dataflödet och svarstiden genom att hantera vanliga begäranden från cachen i stället för att köra upprepade frågor mot serverdelsarkivet. Detta kan minska behovet av att skala databasinfrastrukturen eftersom färre begäranden når databasen från början.

För applikationer med toppar i användningen kan minnesinterna cacheminnen hjälpa till att minska svarstiden genom att hålla ofta begärda data nära den plats där de används.

Snabbguide: Välj ett mönster

Använd dessa som utgångspunkt när du väljer ett arbetsflöde:

  • Prioritera cache-aside när din app kan bestämma vad som ska lagras och när den ska uppdateras.
  • Välj läsningsdataflödet när du vill att cachen ska hämta från datalagringen ”om det behövs”.
  • Överväg skrivningsdataflödet eller tillbakaskrivning när skrivbeteendet är viktigt och du vill ha en definierad metod för återsynkronisering.

Förmåner och tillämpningar av cachelagring

Snabbare svar med mindre serverdelsarbete

Cachelagring förbättrar programmets prestanda eftersom läsning från ett minnesinternt cacheminne går snabbare än att läsa från ett diskdrivet datalager. När fler begäranden hanteras från cacheminnet skickar system färre frågor till serverdelsdatabaser, vilket kan minska behovet av att skala databasinfrastrukturen och sänka relaterade kostnader.

Vad du ofta får från cachelagring
  • Lägre svarstid för vanliga läsningar, eftersom ofta hämtas efterfrågade data från ett snabbare lager.
  • Minskad databasbelastning och -kostnad, eftersom cachelagring leder till färre databasfrågor och mindre tryck för att överetablera databasinstanser.
  • Mer förutsägbart dataflöde eftersom en cache kan hantera mycket hög begärandevolym jämfört med många databaser.
  • Smidigare hantering av trafiktoppar, eftersom minnesinterna cacheminnen kan minska svarstiden under perioder med högt dataflöde.

Bättre användning av beräknings- och lagringsresurser

Cachelagring hjälper till att klippa ut upprepat arbete. Data som läses upprepade gånger eller som är kostsamma att skapa kan lagras en gång och återanvändas. Om en åtgärd utför en komplicerad beräkning eller transformerar data minskar cachelagring av resultatet upprepade beräkningar för efterföljande begäranden.

Vanliga kandidater för en bra cache
  • Data som ändras sällan (till exempel produkt- och prisinformation).
  • Delade statiska resurser som är kostsamma att skapa.
  • Resultat av åtgärder som beräknas upprepade gånger.

Verkliga program (där cachelagring visas)

Webbplatser: Snabbare sidinläsningar och färre tur och retur-resor

Många platser cachelagrar sidutdata (till exempel HTML och klientskript) så att servern kan returnera cachelagrade utdata i stället för att köra sidkoden igen varje gång. Cachelagring stöder även webbmediescenarier via webbcacheminnen och nätverkscachelagring, till exempel nätverk för innehållsleverans (content delivery network).

Vanliga användningsområden på webbplatser
  • Cachelagrade helsidesutdata för upprepningsvyer.
  • Cachelagra statiska tillgångar via nätverks-/CDN-cachelagring.
Appar och API:er: Snabbare läsningar för delad data

Appar lagrar ofta tillfälliga delmängder av data i ett cacheminne för snabb hämtning, medan den primära databasen behåller den fullständiga varaktiga datauppsättningen. Cachelagring av bearbetade data och återanvändning kan hantera begäranden snabbare än standarddatabasfrågor.

Vanliga appmönster
  • Cachelagrade ofta lästa referensdata (till exempel priser) för att minska upprepade databasanrop.
  • Cachelagra beräknade resultat för att undvika att upprepa dyrt arbete.
Servrar och tjänster: Skala läsningar och utjämna toppar

Teams lägger ofta till ett eller flera cachelager för att förbättra dataflödet och svarstiden, hantera vanliga frågor från cacheminnet och minska databasbelastningen. Minnesinterna cacheminnen kan hjälpa dig när användningstoppar och dataflödesefterfrågan ökar, vilket minskar svarstiden under dessa perioder.

Där det hjälper mest
  • Högläsningsslutpunkter där samma nycklar begärs ofta.
  • System som ser regelbundna trafiktoppar.
Affärssystem: Sessionstillstånd och delade driftdata

Cachelagring används ofta för att lagra stora mängder kortlivade sessionsdata (t.ex. användarindata eller anpassningsinställningar) i ett minnesinternt arkiv. Vissa team lagrar även sessionstillstånd i cachen så att tillståndskänsliga appar kan hålla appnivån tillståndslös. För driftsystem är data som ändras sällan, till exempel produkt- och prisinformation, ett vanligt cachelagringsmål.

Exempel som du kan koppla till affärsarbetsbelastningar
  • Sessionsdata för webb- och mobilappar (kortlivade, stora volymer).
  • Läs ofta användningsreferensdata (priser, delade resurser).

Typer av cache

Cachelagring visas i flera lager mellan en app och dess data, inklusive metoder på klientsidan och serversidan.

Webbläsarcache (på klientsidan)

En webbläsarcache lagrar kopior av statiska resurser på en användares enhet så att upprepade besök kan återanvända dessa filer i stället för att ladda ned dem igen.

Vanliga användarsituationer
  • Statiska webbplatsresurser som bilder, CSS-filer och JavaScript-filer.
  • Minska antalet rundresor till ursprungsservern för resurser som redan har hämtats.

Cache på serversidan

Serverbaserad cachelagring sker i processerna som kör affärstjänster på distans, i stället för på slutanvändarens enhet. Serverbaserade cachar är ofta antingen privata (lokala för en app-instans) eller delade (används av många app-instansar).

Vanliga användarsituationer
  • Privat minnesintern cache i en enda process för små mängder statiska data.
  • Delad cachetjänst så att flera app-instansar läser samma cachade värden och undviker ”olika versioner” mellan instanser.
  • Data som läses ofta men ändras sällan (till exempel referensdata för produkt och priser).

CDN-cache

Ett CDN cachelagrar innehåll på gränsservrar närmare slutanvändarna, så begäranden skickas inte alltid tillbaka till ursprunget. Till skillnad från en webbläsarcache (en användare) delas en CDN-cache – en användares begäran kan fylla på innehåll som en annan användare senare tar emot.

Vanliga användarsituationer
  • Delad leverans av cachelagrat innehåll från gränsplatser för att minska antalet anrop till ursprungsservern.
  • Statiska resurser som gynnas av att serveras nära användarna (samma typ av resurser som webbläsare cachelagrar, men som delas mellan användare).

CPU/minnescache

Cachelagring är inte bara ett molnberäkningsmönster – hårdvaru- och minneslager använder det också.

CPU-cache är ett litet, snabbt minnesområde nära (eller på) processorn som lagrar kopior av data som används ofta och instruktioner för att minska den tid som ägnas åt att vänta på huvudminnet.

Minnescache (minnesintern) är den enklaste typen av programvarucache: Ett minnesinternt arkiv som lagras i adressutrymmet för en enda process och som används direkt av den processen.

Vanliga användarsituationer
  • CPU-cache: Upprepad åtkomst till samma instruktioner/data utan frekventa resor till huvudminnet.
  • Minnesintern cache: Snabba läsningar av små mängder relativt statiska data i en tjänst som körs.

Distribuerad cachelagring

En distribuerad cache sträcker sig över flera servrar så att cachen kan växa och den transaktionella kapaciteten öka bortom en enskild dator. Många delade cache-tjänster använder ett kluster av servrar och sprider cachelagrad data över klustret; att skala cachen kan vara så enkelt som att lägga till fler servrar. Vissa distribuerade lösningar använder också lagerindelade cacher, så att en miss i ett lager hämtar från en uppströmsleverantör och sedan lagrar resultatet lokalt inför nästa begäran.

Vanliga användarsituationer
  • Ett delat cachelager för flera appinstanser och datorer.
  • Arbetslaster som behöver cachekapacitet och genomströmning som överstiger en enskild värd.
  • Lagerindelade cachelösningar där missar hämtar från uppströmskällan och sedan behåller en lokal kopia för efterföljande begäranden.

Kom igång med cachelagring

Varför cachelagring fortfarande är viktigt

Cachelagring håller data som används ofta närmare där den används, vilket kan förbättra svarstiderna och hjälpa ett system att hantera fler samtidiga begäranden. Det kan också minska konkurrensen om resurser i det ursprungliga datalagret, till exempel när en databas har ett begränsat antal anslutningar.

I distribuerade program sker cachelagring ofta på mer än en plats – på klientsidan (till exempel i en webbläsare) och på serversidan (i ett program eller en delad cache-tjänst).

Ett praktiskt sätt att börja

Börja i liten skala och fokusera på den data som ger tydligast nytta:

  • Cachelagrade läsintensiva, långsamma data som ändras sällan (till exempel referensdata).
  • Bestäm när data förs in i cachen:
    • På begäran efter den första begäran, så att du bara lagrar det som faktiskt används.
    • Fyll i vissa objekt i förväg vid start om du vet att de kommer att begäras tidigt medan du tittar på startbelastningen i det ursprungliga arkivet.
  • Välj ett mönster som du kan hantera. Cache-aside-mönstret är vanligt och dess vägledning visar hur utgång, borttagning och konsekvens påverkar resultatet.

Håll cachelagrade data uppdaterade (och systemet är motståndskraftigt)

En cache innehåller vanligtvis kopior av data från ett primärt lager, så aktualitet måste åtgärdas:

  • Använd utgångspolicys för att begränsa hur länge data kan ligga kvar i cachen innan de uppdateras.
  • Bevaka borttagningsbeteendet när cacher blir fulla (många system tar som standard bort de minst nyligen använda objekten).
  • Se inte cachen som den enda platsen för kritisk data. Behåll källan till sanningen i beständig lagring så att systemet kan fortsätta om cachen inte är tillgänglig.
  • Planera en reservväg till det ursprungliga datalagret om cachen inte går att nå och fyll på igen i takt med att läsningar sker.

Cachelagring är en grundläggande byggsten i moderna system eftersom den passar många arkitekturer, från enskilda tjänster till distribuerade appar och gränsleverans. För en hanterad cache i minnet från molnleverantör kan du utforska Azure.

tonad bakgrund
Resurser

Resurser

Utbildning
Azure-resurser
Lär dig nya färdigheter Utforska den senaste utvecklartekniken och lär dig nya färdigheter.
Utbildning
Resurser för studentutvecklare
Få kunskaper om hur du snabbt kommer igång med din karriär och får en positiv inverkan på världen.
Evenemang
Azure-händelser och -webbseminarier
Lär dig nya färdigheter, upptäck ny teknik och få kontakt med din community – delta digitalt eller på plats.
Vanliga frågor och svar

Vanliga frågor och svar

  • Cachelagring lagrar data som används ofta i snabbt minne så att appar kan returnera resultat snabbt utan att nå den primära databasen varje gång. Detta minskar svarstiden och serverdelsbelastningen, vilket hjälper system att hantera fler samtidiga begäranden.
  • Cachelagring förbättrar prestanda genom att betjäna data som efterfrågas ofta från snabbt minne, vilket minskar svarstiden, databasens belastning och kostnad, stöder hög begärandevolym och hjälper vid trafiktoppar.
  • Ett exempel är cachelagring av utdata – en webbserver lagrar en sidas återgivna utdata (HTML- och klientskript) i minnet och sedan hanterar cachelagrade utdata vid upprepade besök i stället för att köra sidkoden igen.
  • En cache lagrar en mindre, tillfällig delmängd av data för snabb åtkomst, medan en databas eller lagring innehåller den fullständiga, beständiga datamängden för långsiktig lagring. Om cachelagrade data går förlorade finns den permanenta kopian fortfarande i databasen. cacheminnen är inte avsedda att vara det auktoritativa arkivet för kritiska data.