Hukommelsescaching (ofte blot kaldet caching) er en teknik, hvor computerapplikationer midlertidigt gemmer data i en computers hovedhukommelse (dvs.tilfældig adgangshukommelse eller RAM) for at muliggøre hurtig hentning af disse data. RAM ‘ en, der bruges til midlertidig opbevaring, kaldes cachen. Da adgang til RAM er betydeligt hurtigere end adgang til andre medier som harddiske eller netværk, hjælper caching applikationer med at køre hurtigere på grund af hurtigere adgang til data. Caching er især effektiv, når applikationen udviser et fælles mønster, hvor den gentagne gange får adgang til data, der tidligere var adgang til. Caching er også nyttigt til at gemme databeregninger, der ellers er tidskrævende at beregne. Ved at gemme beregningerne i en cache sparer systemet tid ved at undgå gentagelse af beregningen.
Hvordan fungerer Hukommelsescaching?
Hukommelsescaching fungerer ved først at afsætte en del RAM, der skal bruges som cache. Når ET program forsøger at læse data, typisk fra et datalagringssystem som en database, kontrollerer det, om den ønskede post allerede findes i cachen. Hvis det gør det, læser applikationen dataene fra cachen og eliminerer dermed den langsommere adgang til databasen. Hvis den ønskede post ikke er i cachen, læser applikationen posten fra kilden. Når den henter disse data, skriver den også dataene til cachen, så når applikationen har brug for de samme data i fremtiden, kan den hurtigt hente dem fra cachen.
da cachen er begrænset i størrelse, skal nogle data, der allerede er i cachen, til sidst fjernes for at give plads til nye data, som applikationen senest har fået adgang til. Dette betyder, at cachesystemet har brug for en strategi for, hvilke poster der skal fjernes for at gøre plads. Strategien afhænger af arten af applikationens dataadgang og vil generelt forsøge at fjerne poster, der ikke forventes at blive åbnet igen snart. For eksempel fjerner en mindst nyligt brugt (LRU) strategi den post, hvis sidste adgang var før nogen anden post i cachen. Antagelsen her er, at hvis det har været lang tid siden posten blev åbnet, vil den sandsynligvis ikke blive åbnet igen snart. Eller for at sige det på en anden måde, vil de poster, der blev mest brugt for nylig, sandsynligvis snart blive brugt igen. En mindst hyppigt anvendt (LFU) strategi indebærer sporing af antallet af adganger for hver post i cachen og fjernelse af posten med det mindste antal adganger. Antagelsen her er, at en sjældent brugt post sandsynligvis ikke vil blive brugt igen snart.
udfordringen med caches er, hvordan man minimerer “cache misses”, dvs., forsøgt læser af ansøgningen om poster, der ikke er i cachen. Hvis du har for mange misser, falder effektiviteten af din cache. Et program, der kun læser nye data, ville ikke drage fordel af en cache, og faktisk ville udvise lavere ydelse på grund af det ekstra arbejde med at kontrollere cachen, men alligevel ikke finde den ønskede post i den. En måde denne udfordring kan afhjælpes er ved at udnytte større caches. Dette er ofte ikke praktisk på en enkelt computer, hvorfor distribuerede cacher er populære valg til at fremskynde applikationer, der har brug for adgang til større datasæt. En distribueret cache samler RAM på flere computere, der er tilsluttet i en klynge, så du kan oprette en større cache, der kan fortsætte med at vokse ved at tilføje flere computere til klyngen. Teknologier som hassel IMDG kan bruges som en distribueret klynge til at fremskynde store applikationer.
en anden udfordring med cacher er risikoen for at læse “uaktuelle” data, hvor dataene i cachen ikke afspejler de nyeste data i den underliggende kilde. Ofte er denne risiko en acceptabel afvejning af hensyn til applikationsydelsen. I tilfælde, hvor det ikke er tilfældet, er det op til applikationen, der opdaterer den underliggende datakilde for at opdatere den pågældende post i cachen.
eksempel Use Cases
en bred use case for hukommelse caching er at fremskynde database applikationer, især dem, der udfører mange database læser. Ved at erstatte en del af databaselæsninger med læsninger fra cachen kan applikationer fjerne latenstid, der opstår fra hyppige databaseadgang. Denne brugssag findes typisk i miljøer, hvor der ses en stor mængde dataadgang, som på en hjemmeside med høj trafik, der indeholder dynamisk indhold fra en database.
en anden brugssag involverer forespørgselsacceleration, hvor resultaterne af en kompleks forespørgsel til en database er gemt i cachen. Komplekse forespørgsler, der kører operationer som gruppering og ordre, kan tage lang tid at gennemføre. Hvis forespørgsler køres gentagne gange, som det er tilfældet i et business intelligence (BI) dashboard, som mange brugere har adgang til, vil lagring af resultater i en cache muliggøre større lydhørhed i disse dashboards.
Relaterede Emner
JCache / Java Cache
Cache Miss
Hibernate Cache På Andet Niveau
Yderligere Læsning
Caching Use Case
Database Caching
Hasselcast Cloud
Caching Lavet Bootiful: Forår Cache + Hasselcast