Soluțiile de stocare în cache vă ajută să vă accelerați performanța aplicației. Când căutați cele mai bune soluții de stocare în cache, Redis și Memcached ies ca doua dintre cele mai populare alegeri.
Dar cum decizi pe care să o alegi când compari Redis cu Memcached? Acest ghid vă va ajuta să înțelegeți ce au ambele de oferit și vă va conduce la o decizie informată.
Indiferent dacă doriți să vă creșteți viteza aplicației, să reduceți încărcarea bazei de date sau să vă scalați fără probleme sistemul, înțelegerea soluțiilor de stocare în cache este importantă.
În timp ce Redis și Memcached pot fi folosite ca soluții de stocare în cache a aplicațiilor, au propriile lor caracteristici. Pe de o parte, ambele vă oferă latențe sub milisecunde și un randament ridicat; pe de altă parte, ele diferă în ceea ce privește caracteristicile precum suportul pentru structurile de date și stocarea.
Dar înainte de a ne arunca în Redis vs. Memcached, să ne uităm la cache.
Cuprins
Ce este memorarea în cache și de ce aveți nevoie de ea?
Când efectuați orice operațiune în aplicația dvs., aceasta vă consumă resursele sistemului. Poate fi procesarea dvs. atunci când executați o sarcină intensivă de CPU. Sau poate fi o sarcină intensivă în rețea, cum ar fi citirea dintr-un fișier sau dintr-o bază de date.
Performanța sistemului dvs. este afectată atunci când efectuați în mod repetat același CPU sau aceeași sarcină intensivă în rețea. Luați în considerare scenariul în care căutați unele date din baza de date și interogarea dvs. este complexă. Nu numai că va dura timp pentru a calcula și a prelua datele din baza de date, dar dacă o interogare complexă va consuma mai mult din resursele bazei de date.
Acum, imaginați-vă dacă nu există nicio modificare a rezultatului interogării între două solicitări consecutive. Cu toate acestea, încă ajungeți să rulați aceeași interogare costisitoare de fiecare dată când aveți nevoie de date. Ei bine, ce dacă există o alternativă? Aici intervine stocarea în cache.
În esență, memorarea în cache implică stocarea datelor accesate frecvent în memorie de mare viteză. Acest lucru vă permite să le preluați rapid atunci când datele sunt solicitate din nou. În plus, eliminați necesitatea de a repeta operațiunile care necesită mult resurse – cum ar fi interogări de baze de date sau calcule complexe. Astfel, vă îmbunătățiți performanța sistemului, eficiența și capacitatea de răspuns.
Iată beneficiile pe care le obțineți în urma stocării în cache:
- Latența dvs. este redusă
- Site-urile și aplicațiile dvs. se încarcă și răspund mai repede
- Utilizarea inutilă a resurselor este redusă
- Veți ajunge să aveți mai puțină presiune pe serverele de backend
- Baza de date este protejată de interogări grele care rulează frecvent
Redis: O privire de ansamblu
Redis este un depozit de date open-source care funcționează în memorie. Stocați datele în perechi cheie-valoare. Pe lângă utilizarea ca soluție de stocare în cache, puteți utiliza Redis ca bază de date, broker de mesaje sau coadă.
Deoarece Redis rulează în memorie, obțineți latențe de interogare sub milisecunde. Preluarea datelor din memorie este mult mai rapidă decât de pe disc. Astfel, obțineți un randament foarte mare și puteți efectua o mulțime de citiri și scrieri pe secundă.
Când comparați Redis cu Memcached, Redis acceptă o gamă largă de structuri de date. Puteți stoca orice text sau date binare sub formă de șiruri (dimensiune maximă de 512 MB). Dacă trebuie să stocați obiecte, atunci puteți utiliza perechile câmp-valoare numite Hashes. Dacă trebuie să stocați o colecție de șiruri, puteți utiliza Liste, Seturi sau Seturi Sortate.
Obțineți suport pentru biblioteci client pentru limbaje de programare majore – Java, Python, Go, NodeJs, C# (C-Sharp) și .Net (Dot Net). În plus, când instalați Redis, obțineți un utilitar încorporat în linie de comandă numit redis-cli. Acest instrument CLI vă permite să verificați rapid dacă serverul dvs. Redis funcționează corect. De asemenea, puteți trimite comenzi pentru a citi, scrie sau modifica date.
Beneficiile Redis
- Redis este open-source și disponibil gratuit
- Există clienți oficiali pentru limbaje de programare majore
- Îl puteți folosi ca soluție de stocare în cache, broker de mesaje, bază de date sau coadă
- Oferă performanțe foarte înalte cu latențe sub milisecunde
- Obțineți mai multe structuri de date încorporate, cum ar fi șiruri, liste, seturi și seturi sortate
- Cu arhitectura de replica primară, obțineți disponibilitate și scalabilitate ridicate
În continuare, vom discuta despre Memcached în detaliu.
Memcached: o prezentare generală
Memcached este un sistem de stocare în cache a obiectelor de memorie distribuită gratuit și open-source. Oferă performanțe foarte înalte. Obțineți un magazin cheie-valoare în memorie pentru bucăți mici de date arbitrare. Dar înainte de a compara Redis cu Memcached, să vedem ce face exact Memcached.
Memoria din sistemul dumneavoastră informatic nu este distribuită uniform. Memoria liberă este prezentă în bucăți arbitrare și dimensiuni diferite. Memcached vă permite să accesați memoria disponibilă din diferite părți ale sistemului dumneavoastră. Astfel, iei memoria de unde este exces și o folosești acolo unde este nevoie.
Fiind un simplu magazin cheie-valoare, serverele Memcached nu înțeleg ce reprezintă datele. Stocați date brute preserializate împreună cu o cheie, un timp de expirare și semnalizatoare opționale. În plus, nu primiți nici un suport pentru structurile de date încorporate.
În comparație cu Redis, serverele Memcached nu vorbesc între ele. Nu obțineți sincronizare, replicare sau difuzare. Astfel, disponibilitatea cache-ului și invalidarea sunt simplificate. În calitate de client, ștergeți sau suprascrieți datele direct pe serverul care le deține.
Datorită acestei arhitecturi extrem de simple, Memcached vă oferă performanțe foarte înalte. Pe o mașină rapidă cu rețea de mare viteză, puteți ca Memcached să gestioneze cu ușurință peste 200.000 de solicitări pe secundă.
Beneficiile Memcached
- Deoarece utilizează date din memorie, recuperarea este mai rapidă în comparație cu discul tradițional
- Există API-uri disponibile pentru cele mai populare limbaje de programare
- Memcached reduce nevoia de căutare repetată a datelor prin memorarea în cache a rezultatelor
- Puteți stoca în cache rezultatele bazei de date, răspunsurile API sau chiar paginile web redate
- Vă ajută să recuperați memoria fragmentată
- Utilizează stocarea în cache Least Recently Used, iar articolele expiră după un anumit timp
- Vă puteți construi propriile abstracțiuni ca Memcached
În continuare, vom explora diferența dintre Redis și Memcached.
Redis vs. Memcached: tabel de comparație
CaracteristiciRedisMemcachedData StructuresAre suport pentru structurile de date încorporate, cum ar fi șiruri, liste, seturi, seturi sortate.Niciun suport pentru structurile de date încorporate. Datele brute preserializate sunt stocate. Dimensiunea datelor. Poate stoca valori de până la 512 MB. Poate stoca valori de până la 1 MB. pe disc. Instrumente terțe, cum ar fi libmemcached-tools sunt disponibileThreadingEste cu un singur threadReplicare cu mai multe fire Are o arhitectură de replicare primară care îi permite să aibă replicareNu acceptă replicareCache EvictionFolosește politica cel mai puțin utilizată recent pentru evacuarea cache-ului. Alte politici pot fi configurate. Folosește politica cel mai puțin folosită recent pentru evacuarea memoriei cache. Limbaje de programare Acceptă limbaje de programare majore Acceptă limbaje de programare majore
Acum, să ne uităm la unele dintre cazurile de utilizare care sunt rezolvate de Redis și Memcached.
Cazuri de utilizare pentru Redis și Memcached
#1. Servirea comerțului electronic la scară: Shopify
Dacă ați căutat vreodată să vindeți produse online, atunci sunt șanse să fi întâlnit Shopify. Este o platformă de comerț electronic cu mai multe canale care vă permite să creați cu ușurință un magazin online pentru afacerea dvs. La apogeu, Shopify deservește 80.000 de solicitări pe secundă, alimentând cei 600.000 de comercianți. Cu toate acestea, gestionarea unui astfel de trafic cu latențe minime este o provocare.
Pentru a rezolva acest lucru, Shopify folosește atât Memcached, cât și Redis în stiva sa de tehnologie. În esență, Shopify are o arhitectură destul de simplă care utilizează MySQL pentru baza de date, Memcached ca magazin cheie-valoare și Redis pentru coadă. Uneori, nu trebuie să te uiți la Redis vs. Memcached. Mai degrabă, le puteți folosi pe ambele în arhitectura aplicației dvs.
Când te uiți la orice platformă de comerț electronic, există o mulțime de date statice care nu se schimbă atât de des. Acestea includ lucruri precum imagini ale articolelor, descrieri și informații despre magazin. În loc să interogăm toate aceste date pentru fiecare solicitare, stocarea lor într-un magazin cheie-valoare face ca sistemul să fie rapid și îmbunătățește performanța.
Utilizarea unei soluții de stocare în cache precum Memcached pentru a difuza conținut static reduce încărcarea de pe serverele și bazele de date backend.
#2. Memorarea în cache a datelor aplicației distribuite: Pinterest
Pinterest a crescut pentru a deveni cel mai mare spațiu în care oamenii vin să găsească inspirație. Puteți merge pe Pinterest și vă uitați la toate pinii și panourile pe care le-au creat alți oameni. În culise, se întâmplă multe. Fiecare solicitare care vine trece prin mai multe servicii diferite și efectuează o cantitate mare de calcul. Acest lucru implică, de asemenea, să se uite la pini și recomandări.
Pentru a proteja serviciile de backend și pentru a evita repetarea calculelor, Pinterest folosește un strat de cache distribuit. Aceasta stochează rezultatele calculelor repetate. Astfel, cererile nu ajung la serviciile și bazele de date costisitoare de calcul sau de stocare. Mai degrabă, memoria cache absoarbe o parte semnificativă din trafic. Stratul de stocare în cache al Pinterest se întinde pe mii de mașini și deservește peste 150 de milioane de solicitări pe secundă.
Dacă te uiți la modul în care Pinterest își gestionează stratul de stocare în cache, vei descoperi că rulează Memcached și mcrouter ca coloană vertebrală a acesteia. Datorită naturii sale asincrone bazate pe evenimente și procesării cu mai multe fire, Memcached este extrem de eficient. Adăugați la asta faptul că are o arhitectură foarte simplă. Vă puteți construi propriile abstracțiuni și le puteți scala pe orizontală. Așa își gestionează Pinterest traficul.
#3. Gestionarea securității datelor la scară: CloudSponge
Dacă sunteți în căutarea unui software-as-a-service (SaaS) care să le permită utilizatorilor să trimită rapid invitații, cupoane sau felicitări, atunci CloudSponge este răspunsul. Îi ajută pe utilizatorii săi să importe toate agendele majore, astfel încât utilizatorii să nu fie nevoiți să introducă manual adresele de e-mail de contact.
Într-un singur an, CloudSponge procesează aproape 2 trilioane de adrese de e-mail prin serverele sale. Acest lucru vine cu propria provocare de securitate, deoarece orice vulnerabilitate din sistem le poate oferi hackerilor șansa de a fura datele.
Puteți utiliza Redis ca mai mult decât o simplă soluție de stocare în cache. Este exact ceea ce face CloudSponge. Redis păstrează toate datele de contact în memorie. Datele sunt păstrate suficient de mult pentru ca clienții să le recupereze. După aceea, este șters. Niciuna dintre date nu este păstrată pe disc, chiar dacă Redis oferă această opțiune.
#4. Alte utilizări comune pentru soluțiile de stocare în cache
Iată câteva dintre celelalte scenarii comune în care sunt utilizate soluții de stocare în cache:
❇️ Sisteme de mesagerie prin chat
Dacă vă creați propriul sistem de mesagerie prin chat, atunci soluțiile de stocare în cache sunt o componentă neprețuită de care aveți nevoie în arhitectura dvs. Puteți stoca date accesate frecvent, cum ar fi profiluri de utilizator, liste de contacte și mesaje recente. Acest lucru, la rândul său, ajută la reducerea efortului asupra bazei de date și crește capacitatea de răspuns a sistemului.
Funcțiile în timp real, cum ar fi indicatorii de tastare și notificările de prezență, beneficiază, de asemenea, de cache. Dacă utilizați un cache distribuit, atunci vă puteți scala serverele backend fără a fi nevoie să vă măriți memoria cache.
❇️ Servicii de localizare
Dacă deschideți o aplicație și vă uitați la servicii bazate pe locație, cum ar fi estimarea distanței, orele de sosire și recomandările din apropiere, vă bazați pe cache-urile reglate pentru datele despre locație. Datele de locație sunt stocate sub forma unui index geospațial.
Cu un index geospațial, este posibil să stocați locația oricărui obiect în depozitul dvs. de date. Redis acceptă în mod implicit indici geospațiali. Datorită faptului că sunt servite din memorie, informațiile despre locație pot fi partajate eficient în timp real.
❇️ Analytics în timp real
Jocurile online au devenit o industrie masivă. S-ar putea să fiți familiarizat cu jocurile mobile cooperative sau cu aplicațiile de sport fantezie în care jucătorii se bazează pe latențe sub secunde pentru a lua o decizie sau pentru a face modificări.
Folosind un cache, puteți avea analize în timp real, cum ar fi menținerea unui clasament. Pentru aplicații precum sporturile fantastice, puteți stoca statisticile și informațiile jucătorului în stratul cache pentru a crește performanța aplicației.
Pe care ar trebui să-l alegi?
Redis se remarcă ca o opțiune versatilă, cu suport pentru diferite structuri de date, făcându-l potrivit pentru aplicațiile dvs. care necesită mai mult decât stocarea în cache de bază. Latența de interogare sub milisecunde și debitul mare, împreună cu suportul bibliotecii client pentru limbaje de programare majore, îl fac un competitor puternic pentru sistemele care solicită atât viteză, cât și flexibilitate. De asemenea, obțineți suportul nativ pentru păstrarea datelor pe disc dacă aveți nevoie.
Pe de altă parte, Memcached excelează când vine vorba de simplitate și memorie cache de mare viteză. Este o alegere ideală pentru dvs. atunci când cazul dvs. de utilizare pune în cache date brute, preserializate. Acesta utilizează eficient memoria disponibilă în diferite părți ale sistemului dumneavoastră. Arhitectura simplă a lui Memcached are ca rezultat performanțe foarte înalte, în special pe mașinile rapide cu rețele de mare viteză.
Pentru a face alegerea corectă între Redis și Memcached, luați în considerare factori precum complexitatea aplicației dvs., cerințele privind structura datelor și nevoile de scalabilitate. Redis este excelent pentru situațiile în care aveți nevoie de diverse structuri de date și de funcții mai avansate, în timp ce Memcached vă oferă cele mai mici latențe și cel mai mare randament în scenarii de stocare în cache simple și de înaltă performanță.
Când vine vorba de Redis vs. Memcached, decizia ar trebui să se alinieze în cele din urmă cu obiectivele și constrângerile specifice ale proiectului dumneavoastră. Uneori, stocarea în cache a datelor aplicației ar putea să nu fie suficientă.
În continuare, verificați cum să configurați un server de cache DNS local pe Linux.