Trace Id is missing
Hoppa till huvudinnehåll

Vad är cachelagring?

Utvecklare och IT-proffs använder cachelagring för att spara nyckelvärdedata i det tillfälliga minnet så att det går snabbare och enklare att komma åt dem jämfört med data som lagras konventionell datalagring. Cacheminnen är användbara i flera scenarier med flera tekniker, till exempel cachelagring med RAM-minne på datorer, nätverkscachelagring i ett nätverk för innehållsleverans, en webbcache för webbmediedata eller en molncache som gör molnappar mer motståndskraftiga. Utvecklare utformar ofta program så att bearbetade data cachelagras och återanvänds så att det går snabbare att hantera begäranden jämfört med vanliga databasfrågor.

Med hjälp av cachelagring kan du minska databaskostnaderna och få högre dataflöde och kortare svarstider än de flesta databaser kan erbjuda samt öka prestandan för moln- och webbprogram.

Hur fungerar cachelagring för databaser?

Utvecklare kan komplettera en primär databas genom att placera en databascache i databasen eller programmet, eller konfigurera den som ett fristående lager. Även om utvecklare vanligtvis använder en konventionell databas för att lagra stora, hållbara, fullständiga datauppsättningar, använder de ett cacheminne för att tillfälligt lagra delmängder av data som de behöver kunna hämta snabbt.

Du kan använda cachelagring med alla typer av datalager, inklusive NoSQL-databaser och relationsdatabaser som SQL Server,  MySQL eller  MariaDB. Cachelagring fungerar också bra med många specifika dataplattformar som  Azure Database for PostgreSQL,  Azure SQL Database och  Azure SQL Managed Instance. Vi rekommenderar att du tar reda på vilken typ av datalager som bäst uppfyller dina krav innan du börjar konfigurera en dataarkitektur. Det är till exempel bra att veta vad PostgreSQL är innan du använder det för att kombinera relationella och ostrukturerade datalager.

Fördelarna med cachelager, och vad är Redis?

Utvecklare använder cacheminnen på flera nivåer, så kallade cachelager, för att lagra olika typer av data i separata cacheminnen beroende på efterfrågan. Genom att lägga till ett eller flera cachelager kan du avsevärt förbättra datalagrets dataflödes- och svarstidsprestanda.

Redis är en populär minnesintern datastruktur med öppen källkod som används för att skapa högpresterande cachelager och andra datalager. En nyligen genomförd studie visade att dataflödet ökade med över 800 procent och svarstidsprestanda förbättrades med över 1 000 procent när Azure Cache for Redis lades till i ett exempelprogram1.

Cacheminnen kan också minska den totala ägandekostnaden (TCO) för ett datalager. Genom att hantera de vanligaste frågorna och minska databasbelastningen med hjälp av cacheminnen kan du minska behovet av att överetablera databasinstanser, vilket resulterar i betydande kostnadsbesparingar och lägre total ägandekostnad.

Typer av cachelagring

Din cachelagringsstrategi beror på hur ditt program läser och skriver data. Skriver programmet mycket eller skrivs data en gång och läses ofta? Är de data som returneras alltid unika? Olika dataåtkomstmönster påverkar hur du konfigurerar en cache. Vanliga cachelagringstyper är cache-aside, read-through/write-through och write-behind/write-back.

Cache-Aside

Utvecklare använder ofta programmeringsmönstret Cache-Aside, eller "sidocache", för program med läsintensiva arbetsbelastningar. Sidocachen placeras utanför programmet, som sedan kan ansluta till cacheminnet för att fråga efter och hämta data eller ansluta direkt till databasen om data inte finns i cacheminnet. När programmet hämtar data kopieras de till cacheminnet för framtida frågor.

Du kan använda en sidocache för att förbättra programprestanda, upprätthålla konsekvens mellan cacheminnet och datalagret och se till att data i cacheminnet inte blir inaktuella.

”Read-through/write-through”-cache

“Read-through”-cacheminnen håller sig själva uppdaterade, och vid användning av “write-through”-cachelagring skriver programmet data till cachen och sedan till databasen. Båda cacheminnena ligger i linje med databasen och programmet behandlar dem som huvuddatalagret.

Read-through förenklar program där samma data begärs om och om igen, men själva cachen är mer komplex, medan write-through-processen i två steg kan skapa längre svarstider. Utvecklare kopplar ihop de två för att säkerställa datakonsekvens mellan cacheminnet och databasen, minska svarstiden för skrivskyddade cacheminnen och göra det enklare att uppdatera read-through-cachen.

Med ”read-through/write-through”-cachelagring kan utvecklare förenkla programkoden, öka cacheskalbarheten och minimera databasbelastningen.

”Write-behind/write-back”-cache

I det här scenariot skriver programmet data till cacheminnet, som bekräftas omedelbart. Sedan skriver själva cacheminnet data tillbaka till databasen i bakgrunden. ”Write-behind”-cacheminnen, som ibland kallas återskrivningscache, passar bäst för skrivintensiva arbetsbelastningar och de förbättrar skrivprestanda eftersom programmet inte behöver vänta på att skrivningen ska slutföras innan det går vidare till nästa uppgift.

Distribuerad cache jämfört med sessionslager

Många blandar ihop distribuerade cacheminnen med sessionslager, som är liknande men har andra krav och syften. I stället för att använda en distribuerad cache som komplement till en databas implementerar utvecklare sessionslager, som är tillfälliga datalager på användarnivån, för profiler, meddelanden och andra användardata i sessionsorienterade program som webbappar.

Vad är ett sessionslager?

Sessionsorienterade program håller koll på vilka åtgärder användarna utför när de är inloggade i programmen. Du kan bevara dessa data när användaren loggar ut genom att lagra dem i ett sessionslager, vilket förbättrar sessionshanteringen, minskar kostnaderna och förbättrar programmets prestanda.

Vad är skillnaden mellan att använda ett sessionslager och cachelagra en databas?

I ett sessionslager delas inte data mellan olika användare, men med cachelagring kan olika användare komma åt samma cache. Utvecklare använder cachelagring för att förbättra prestandan för en databas eller lagringsinstans medan sessionslager används för att öka programprestanda genom att skriva data till ett internminne, vilket gör att programmet inte behöver ansluta till någon databas alls.

Data som skrivs till ett sessionslager har vanligtvis kort livslängd medan data som cachelagras i en primär databas ofta behöver sparas en mycket längre tid. För ett sessionslager krävs replikering, hög tillgänglighet och datahållbarhet för att se till att transaktionsdata inte går förlorade och att användarna förblir interaktiva. Å andra sidan finns alltid en kopia av data i den permanenta databasen om data på en sidocache skulle gå förlorade.

Fördelarna med cachelagring

Förbättrad programprestanda

Det går mycket snabbare att läsa data från en minnescache än från ett datalager på disk. Och programupplevelsen blir mycket bättre när det går snabbare att komma åt data.

Minskad databasanvändning och lägre kostnader

Med cachelagring minskar antalet databasfrågor, vilket ger bättre prestanda och lägre kostnader då behovet av att skala databasinfrastrukturen begränsas och dataflödesavgifterna minskar.

Skalbar och förutsägbar prestanda

En enda cacheinstans kan hantera miljontals begäranden per sekund. Databaser kan inte matcha en sådan nivå när det gäller dataflöde och skalbarhet. Cachelagring ger också den flexibilitet du behöver oavsett om du skalar ut eller skalar upp dina program och datalager. Sedan kan programmet ge många användare åtkomst till samma filer samtidigt, utan att belastningen på databaserna på serverdelen ökar. Och om ett program ofta har användningstoppar och ett högt dataflöde går det att minska svarstiden med minnesintern cachelagring.

Vad används cachelagring till?

Cachelagring av utdata

Genom att cachelagra hela källkoden för de sidor (till exempel HTML-kod och klientskript) som en server skickar får webbsidor bättre prestanda. Varje gång en användare visar en sida cachelagrar servern utdatakoden i programmets minne. Det gör att programmet kan hantera begäranden utan att köra sidkod eller kommunicera med andra servrar.

Cachelagring av data och databaser

Databasens hastighet och dataflöde kan ha stor påverkan på programmets prestanda. Cachelagring av databaser används för frekventa anrop till data som inte ändras ofta, till exempel information om priser och lager. Det gör att webbplatser och program kan läsa in dessa data snabbare, och det ökar dataflödet och minskar svarstiden när data hämtas från databaser på serverdelen.

Lagra användarsessionsdata

Programanvändare genererar ofta data som behöver lagras under korta perioder. Ett minnesinternt datalager som Redis är perfekt för att effektivt och tillförlitligt lagra stora mängder sessionsdata som användarindata, kundvagnsposter eller anpassningsinställningar till en lägre kostnad än lagringsenheter eller databaser.

Arkitekturer för publicering/prenumeration och meddelandehanterare

Molnprogram behöver ofta utbyta data mellan tjänster och de kan använda cachelagring för att implementera arkitekturer för publicering/prenumeration eller meddelandehanterare som minskar svarstiden och påskyndar datahanteringen.

Program och API:er

I program sparas viktiga filer och data så att det snabbt går att läsa in informationen på nytt när den behövs, som i webbläsare. Cachelagrade API-svar minskar belastningen på programservrar och databaser, och ger bättre svarstid och prestanda.

[1] Uppgifter om prestanda baseras på data från en undersökning som beställdes av Microsoft och som genomfördes av GigaOm i oktober 2020. I studien jämförs prestanda för ett testprogram med hjälp av en Azure-databas med och utan implementering av Azure Cache for Redis som en cachelagringslösning. Azure SQL Database och Azure Database for PostgreSQL användes som databaselement i studien. En 2 vCore Gen 5-instans för generell användning av Azure SQL Database och en 2 vCore-instans för generell användning av Azure Database for PostgreSQL användes med en 6 GB P1 Premium-instans av Azure for Redis. Dessa resultat jämfördes med 8, 16, 24 och 32 vCore Gen 5-instanser för generell användning av Azure SQL Database och 8, 16, 24 och 32 vCore-instanser för generell användning av Azure Database for PostgreSQL utan Azure Cache for Redis. Riktmärkesdata hämtas från GigaOm Web Application Database Load Test, som simulerar ett vanligt webbprogram och en serverdelsdatabas som belastas av ökade HTTP-begäranden. De faktiska resultaten kan variera beroende på konfiguration och region. Se hela studien.

Kostnadsfritt konto

Prova Azures tjänster för molnbaserad databehandling kostnadsfritt i upp till 30 dagar.

Betala allteftersom

Kom igång med användningsbaserad prissättning. Det finns inga förhandsåtaganden – avsluta när du vill.

Lägg till ett snabbt cachelagringslager i ditt program med en fullständigt hanterad Redis-tjänst. Läs om hur du kommer igång med Azure Cache for Redis.

Om du vill använda flexibel, filbaserad cachelagring för högpresterande program kan du läsa om Azure HPC Cache.