memory caching (adesea denumit simplu caching) este o tehnică în care aplicațiile informatice stochează temporar date în memoria principală a unui computer (adică memorie cu acces aleator sau RAM) pentru a permite recuperarea rapidă a acestor date. Memoria RAM utilizată pentru stocarea temporară este cunoscută sub numele de cache. Deoarece accesarea RAM este semnificativ mai rapidă decât accesarea altor suporturi media, cum ar fi unitățile de hard disk sau rețelele, cache-ul ajută aplicațiile să ruleze mai repede datorită accesului mai rapid la date. Cache-ul este deosebit de eficient atunci când aplicația prezintă un model comun în care accesează în mod repetat datele accesate anterior. Cache – ul este, de asemenea, util pentru a stoca calcule de date care altfel consumă mult timp pentru a calcula. Prin stocarea calculelor într-o memorie cache, sistemul economisește timp evitând repetarea calculului.
cum funcționează memoria cache?
memorarea în cache funcționează mai întâi punând deoparte o porțiune de memorie RAM pentru a fi utilizată ca cache. Pe măsură ce o aplicație încearcă să citească date, de obicei dintr-un sistem de stocare a datelor, cum ar fi o bază de date, verifică dacă înregistrarea dorită există deja în memoria cache. Dacă se întâmplă, atunci aplicația va citi datele din memoria cache, eliminând astfel accesul mai lent la baza de date. Dacă înregistrarea dorită nu se află în memoria cache, aplicația citește înregistrarea de la sursă. Când preia aceste date, scrie și datele în memoria cache, astfel încât atunci când aplicația are nevoie de aceleași date în viitor, să le poată obține rapid din memoria cache.
deoarece cache-ul este limitat în dimensiune, în cele din urmă unele date deja în cache-ul va trebui să fie eliminate pentru a face loc pentru noi date care cererea a accesat cel mai recent. Aceasta înseamnă că sistemul de cache are nevoie de o strategie pe care înregistrările să le elimine pentru a face loc. Strategia va depinde de natura accesului la date al aplicației și va încerca, în general, să elimine înregistrările care nu se așteaptă să fie accesate din nou în curând. De exemplu, o strategie LRU (cel mai puțin utilizat recent) va elimina înregistrarea al cărei ultim acces a fost înainte de orice altă înregistrare din memoria cache. Presupunerea aici este că, dacă a trecut mult timp de când înregistrarea a fost accesată, probabil că nu va mai fi accesată în curând. Sau altfel spus, înregistrările care au fost cele mai utilizate recent vor fi probabil folosite din nou în curând. O strategie cel mai puțin frecvent utilizată (LFU) presupune urmărirea numărului de accesări ale fiecărei înregistrări din memoria cache și eliminarea înregistrării cu cel mai mic număr de accesări. Presupunerea aici este că o înregistrare rar utilizată nu va fi probabil folosită din nou în curând.
provocarea cu cache-uri este Cum de a minimiza „cache rateaza,” adică., tentativă de citire de către aplicație pentru înregistrări care nu se află în memoria cache. Dacă aveți prea multe ratări, eficiența cache-ului dvs. scade. O aplicație care citește doar date noi nu ar beneficia de o memorie cache și, de fapt, ar prezenta performanțe mai scăzute din cauza muncii suplimentare de verificare a memoriei cache, dar nu ar găsi înregistrarea dorită în ea. O modalitate prin care această provocare poate fi atenuată este prin valorificarea cache-urilor mai mari. Acest lucru nu este adesea practic pe un singur computer, motiv pentru care cache-urile distribuite sunt alegeri populare pentru accelerarea aplicațiilor care trebuie să acceseze seturi de date mai mari. O memorie cache distribuită reunește memoria RAM a mai multor computere conectate într-un cluster, astfel încât să puteți crea o memorie cache mai mare care poate continua să crească adăugând mai multe computere în cluster. Tehnologii precum Hazelcast IMDG pot fi utilizate ca un cluster distribuit pentru a accelera aplicațiile la scară largă.
o altă provocare a cache-urilor este riscul de a citi date „învechite”, în care datele din cache nu reflectă cele mai recente date din sursa de bază. Adesea, acest risc este un compromis acceptabil din motive de performanță a aplicației. În cazurile în care nu este, depinde de aplicație care actualizează sursa de date subiacentă pentru a actualiza înregistrarea în cauză în memoria cache.
Exemple de cazuri de Utilizare
un caz larg de utilizare pentru cache-ul de memorie este de a accelera aplicațiile bazei de date, în special cele care efectuează multe citiri ale bazei de date. Prin înlocuirea unei porțiuni de citire a bazei de date cu citiri din memoria cache, aplicațiile pot elimina latența care apare din accesările frecvente ale bazei de date. Acest caz de utilizare se găsește de obicei în medii în care se observă un volum mare de accesări de date, cum ar fi într-un site web cu trafic ridicat care prezintă conținut dinamic dintr-o bază de date.
un alt caz de utilizare implică accelerarea interogării, în care rezultatele unei interogări complexe către o bază de date sunt stocate în memoria cache. Interogările complexe care rulează operațiuni precum gruparea și ordinea pot dura o perioadă semnificativă de timp pentru a fi finalizate. Dacă interogările sunt rulate în mod repetat, așa cum este cazul într-un tablou de bord business intelligence (BI) accesat de mulți utilizatori, stocarea rezultatelor într-un cache ar permite o reacție mai mare în acele tablouri de bord.
Subiecte Înrudite
JCache / Java Cache
Cache Miss
Hibernare Cache De Nivelul Doi
Lecturi Suplimentare
Caching Caz De Utilizare
Cache De Baze De Date
Hazelcast Cloud
Cache Făcut Bootiful: Cache De Primăvară + Hazelcast