Hoppa över navigering

Vad är cachelagring?

Utvecklare och it-experter använder cachelagring för att spara och komma åt nyckelvärdesdata i det tillfälliga minnet snabbare och lättare än data lagrade i konventionell datalagring. Cacheminnen är användbara i flera scenarier med flera tekniker, t.ex. datorcachelagring med random access memory (RAM), nätverkscachelagring i ett innehållsleveransnätverk, en webbcache för webbmediedata eller en molncache för att göra molnapparna mer elastiska. Utvecklare utformar ofta program för cachelagring av bearbetade data och ändrar sedan syfte för att hantera begäranden snabbare än i standarddatabasfrågor.

Du kan använda cachelagring för att minska databaskostnaderna, leverera högre dataflöde och lägre fördröjning än de flesta databaser kan erbjuda och förbättra prestandan för moln- och webbprogram.

Hur fungerar cachelagring för databaser?

Utvecklare kan komplettera en primär databas med en databascache som de kan placera i databasen eller programmet, eller konfigurera som ett fristående lager. Även om de vanligtvis förlitar sig på en konventionell databas för att lagra stora, varaktiga, fullständiga datamängder, använder de en cache för att lagra tillfälliga delmängder med data för snabb hämtning.

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

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

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

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 undersökning visade att om du lägger till Azure Cache for Redis i ett exempelprogram ökade dataflöde med över 800 procent och förbättrade svarstidsprestanda med över 1 000 procent1.

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

Typer av cachelagring

Din cachelagringsstrategi beror på hur ditt program läser och skriver data. Är ditt program skrivtungt 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 ett cacheminne. Vanliga cachelagringstyper är sidocachelagring, genomläsning/genomskrivning samt bakomskrivning/tillbakaskrivning.

Sidocache

För program med lästunga arbetsbelastningar använder utvecklare ofta ett programmeringsmönster för cachelagring vid sidan, eller ”sidocache”. De placerar sidocachen utanför programmet, som sedan kan ansluta till cacheminnet för att fråga och hämta data eller direkt till databasen om data inte finns i cacheminnet. När programmet hämtar data kopieras de till cachen för framtida frågor.

Du kan använda en sidocache för att förbättra programmets prestanda, upprätthålla konsekvens mellan cacheminnet och datalagret och hindra data i cacheminnet från att bli inaktuella.

Genomläsnings-/genomskrivningscache

Genomläsningscacher uppdateras automatiskt, medan genomskrivningscacher innebär att programmet skriver data till cacheminnet och sedan till databasen. Båda cacheminnena ligger i linje med databasen och programmet behandlar dem som det huvudsakliga datalagret.

Genomläsningscacher hjälper till att förenkla program där samma data begärs om och om igen, men själva cacheminnet är mer komplext, medan tvåstegsprocessen med genomskrivning kan skapa fördröjning. Utvecklare kopplar ihop de två för att säkerställa datakonsekvens mellan cacheminnet och databasen, minska cachefördröjningen för skrivning och gör det lättare att uppdatera genomläsningscachen.

Med genomläsnings-/genomskrivningcacher kan utvecklare förenkla programkod, öka cacheskalbarheten och minimera databasbelastningen.

Cache för bakomskrivning/tillbakaskrivning

I det här scenariot skriver programmet data till cacheminnet, vilket omedelbart bekräftas, och sedan skriver själva cachen tillbaka data till databasen i bakgrunden. Bakomskrivna cacheminnen, ibland kallade tillbakaskrivningscacheminnen, passar bäst för skrivtunga arbetsbelastningar och de förbättrar skrivprestanda eftersom programmet inte behöver vänta på att skrivningen ska slutföras innan nästa aktivitet flyttas.

Distribuerad cache jämfört med sessionsarkiv

Distribuerade cacheminnen blandas ofta ihop med sessionsarkiv, som visserligen är likartade men har helt olika krav och syften. Istället för att använda en distribuerad cache för att komplettera en databas implementerar utvecklare sessionsarkiv, som är tillfälliga datalager i användarskiktet, för profiler, meddelanden och andra användardata i sessionsorienterade program som webbappar.

Vad är ett sessionsarkiv?

Sessionsorienterade program spårar åtgärder som användarna vidtar när de är inloggade i programmen. Om du villha kvar dessa data när användaren loggar ut, kan du spara dem i ett sessionsarkiv, vilket förbättrar sessionshanteringen, minskar kostnaderna och ökar programmets prestanda.

Hur skiljer sig användningen av ett sessionsarkiv från att cachelagra en databas?

I ett sessionsarkiv delas inte data mellan olika användare. Med cachelagring har olika användare åtkomst till samma cache. Utvecklare använder cachelagring för att förbättra prestanda för en databas eller lagringsinstans, medan de använder sessionsarkiv för att öka programmets prestanda genom att skriva data till arkivet i minnet, vilket eliminerar behovet av att överhuvudtaget komma åt en databas.

Data som skrivs till ett sessionsarkiv är vanligtvis kortlivade, medan data som cachelagras med en primär databas vanligtvis är avsedda att bestå mycket längre. Ett sessionsarkiv kräver replikering, hög tillgänglighet och datahållbarhet för att säkerställa att transaktionsdata inte försvinner och att användarna förblir engagerade. Om å andra sidan data i en sidocache går förlorade, finns det alltid en kopia av dem i den permanenta databasen.

Fördelar med cachelagring

Ökade prestanda för program

Det går mycket snabbare att läsa data från en minnesintern cache än att komma åt data från ett diskbaserat datalager. Och med snabbare åtkomst till data förbättras den övergripande programupplevelsen avsevärt.

Minskad databasanvändning och kostnader

Cachelagring leder till färre databasfrågor, förbättrade prestanda och lägre kostnader genom att behovet av att skala databasinfrastrukturen och minska dataflödesavgifterna begränsas.

Skalbara och förutsägbara prestanda

En enskild cacheinstans kan hantera miljontals begäranden per sekund, vilket ger en nivå av dataflöde och skalbarhet som databaser inte kan matcha. Cachelagring ger också den flexibilitet du behöver oavsett om du skalar ut eller skalar upp dina program och datalager. Sedan kan ditt program ge många användare åtkomst till samma filer samtidigt, utan att öka belastningen på serverdelsdatabaser. Och om ett program ofta upplever hög användning och högt dataflöde kan cacheminnet i minnet minska fördröjningen.

Vad används cachelagring för?

Cachelagring av utdata

Cachelagring av utdata hjälper till att öka prestanda för webbsidor genom att lagra den fullständiga källkoden för sidor som HTML och klientskript som en server skickar till webbläsare för återgivning. Varje gång en användare visar sidan cachelagrar servern utdatakoden i programmets minne. Detta gör att programmet kan hantera begäranden utan att köra sidkod eller kommunicera med andra servrar.

Cachelagring av data och cachelagring av databaser

Databashastighet och dataflöde kan vara viktiga faktorer för övergripande programprestanda. Databascachelagring används för frekventa anrop till data som inte ändras ofta, till exempel prissättnings- eller inventeringsdata. Det hjälper webbplatser och program att läsas in snabbare samtidigt som dataflödet ökas och datahämtningsfördröjningen minskas från serverdelsdatabaser.

Lagrar användarsessionsdata

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

Arkitekturer för meddelandekoordinatorer och publicering/prenumeration

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 meddelandekoordinator som minskar fördröjning och påskyndar datahanteringen.

Program och API:er

Precis som webbläsare sparar program viktiga filer och data för att snabbt läsa in informationen igen vid behov. Cachelagrade API-svar eliminerar efterfrågan eller belastningen på programservrar och databaser, vilket ger snabbare svarstider och bättre prestanda.

1Prestandaanspråk baseras på data från en undersökning som beställts av Microsoft och genomfördes av GigaOm i oktober 2020. I undersökningen jämfördes prestanda för ett testprogram med en Azure-databas med och utan att implementera Azure Cache for Redis som en cachelagringslösning. Azure SQL Database och Azure Database for PostgreSQL användes som databaselement i undersökningen. En instans med 2 vCore, Gen5, Generell användning av Azure SQL Database och en instans av 2 vCore, Generell användning av Azure Database for PostgreSQL användes med en P1 Premium-instans på 6 gigabyte av Azure for Redis. De här resultaten jämfördes med instanser av 8, 16, 24 och 32 vCore, Gen5, Generell användning av Azure SQL Database och instanser av 8, 16, 24 och 32 vCore, Generell användning av Azure Database for PostgreSQL utan Azure Cache for Redis. Benchmark-data hämtas från GigaOm Web Application Database Load Test, som simulerar ett vanligt webbprogram och serverdelsdatabas som överlastas genom ökade HTTP-begäranden. Faktiska resultat kan variera beroende på konfiguration och region. Se den fullständiga undersökningen.

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

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

Kan vi hjälpa dig?