|
Dezvoltarea aplicațiilor cu Redis este un proces plăcut, dar, ca orice tehnologie, există câteva lucruri pe care trebuie să le ții cont atunci când proiectezi aplicații bazate pe Redis. Probabil că ai fost familiarizat cu întreaga rutină a dezvoltării bazelor de date relaționale, iar dezvoltarea aplicațiilor bazate pe Redis are multe asemănări, dar trebuie să ții cont de următoarele două lucruri - Redis este o bază de date în memorie și este single-threaded. Prin urmare, când folosești Redis, trebuie să fii atent la următoarele aspecte: 1. Controla toate cheile stocate în Redis Funcția principală a unei baze de date este de a stoca date, dar este normal ca dezvoltatorii să ignore unele date stocate în baza de date din cauza modificărilor cerințelor aplicației sau metodelor de utilizare a datelor, iar același lucru este valabil și în Redis. Poți trece cu vederea anumite chei care expiră sau poți uita datele pentru că un modul aplicației tale este depreciat. În oricare dintre cazuri, Redis stochează unele date care nu mai sunt folosite, ocupând spațiu fără motiv. Tiparul de date slab structurat al lui Redis face dificilă identificarea a ceea ce este stocat centralizat, decât dacă folosești o nomenclatură foarte matură pentru chei. Folosirea metodei corecte de denumire va simplifica gestionarea bazei de date, iar când creezi un spațiu de nume pentru chei prin aplicație sau serviciu (de obicei folosind două puncte pentru a împărți numele cheilor), poți identifica ușor datele la migrare, conversie sau ștergere. Un alt caz de utilizare comun pentru Redis este ca al doilea depozit de date pentru elemente fierbinți, unde majoritatea datelor sunt stocate în alte baze de date, cum ar fi PostgreSQL sau MongoDB. În aceste cazuri de utilizare, dezvoltatorii uită adesea să șteargă datele corespunzătoare din Redis atunci când datele sunt eliminate din stocarea primară. În acest caz, de obicei este necesară ștergerea în cascadă, caz în care se poate realiza prin salvarea tuturor identificatorilor pentru un anumit element de date în configurația Redis, astfel încât după ce datele sunt șterse în baza de date principală, este chemat un cleaner pentru a șterge toate copiile și informațiile relevante. 2. Controlează lungimea tuturor numelor cheie Așa cum am spus mai sus, am folosit convenții de denumire adecvate și am adăugat prefixe pentru a identifica unde se îndreaptă datele, deci acest lucru pare să contravină. Totuși, nu uita că Redis este o bază de date în memorie, iar cu cât cheile sunt mai scurte, cu atât ai nevoie de mai puțin spațiu. Desigur, atunci când există milioane sau miliarde de chei într-o bază de date, lungimea numelui cheii va avea un impact mare. De exemplu, pe un server Redis pe 32 de biți, dacă stochezi un milion de chei cu o lungime de 32 de caractere, va consuma aproximativ 96MB de spațiu când folosești un nume de cheie de 6 caractere, dar dacă folosești un nume de cheie de 12 caractere, consumul de spațiu va crește la aproximativ 111MB. Cu mai multe chei, cheltuielile suplimentare de 15% vor avea un impact semnificativ. 3. Folosirea structurii de date potrivite Fie că este vorba de utilizarea memoriei sau de performanță, uneori structurile de date pot avea un impact mare, iată câteva bune practici la care să te adresezi: În loc să stochezi datele ca mii (sau milioane) de șiruri separate, ia în considerare folosirea structurilor de date hash-ate pentru a grupa datele conexe. Tabelele hash sunt foarte eficiente și pot reduce consumul de memorie; În același timp, hashing-ul este mai benefic pentru abstractizarea detaliilor și lizibilitatea codului. Când este cazul, folosește listă în loc de set. Dacă nu ai nevoie să folosești funcția set, List poate oferi viteze mai mari decât set, folosind mai puțină memorie. Seturile sortate sunt cele mai costisitoare structuri de date, atât în ceea ce privește consumul de memorie, cât și complexitatea operațiunilor de bază. Dacă ai nevoie doar de o modalitate de a interoga înregistrări și nu te interesează sortarea acestor proprietăți, atunci este foarte recomandat să folosești tabele hash. O caracteristică adesea neglijată în Redis este bitmap-ul sau seturile de biți (după versiunea 2.2). Seturile de biți îți permit să efectuezi mai multe operații la nivel de bit asupra valorilor Ridis, cum ar fi o analiză ușoară. 4. Nu folosiți cheia când folosiți SCAN Începând cu Redis v2.8, comanda SCAN este deja disponibilă, care permite recuperarea tastelor din spațiul de taste folosind cursorul. Comparativ cu comanda KEYS, deși SCAN nu poate returna toate rezultatele corespunzătoare simultan, evită riscul ridicat de blocare a sistemului, astfel încât unele operații pot fi executate pe nodul principal. Este important de menționat că comanda SCAN este un iterator bazat pe cursor. De fiecare dată când este apelată comanda SCAN, un nou cursor va fi returnat utilizatorului, iar acesta va trebui să folosească acest nou cursor ca parametru de cursor al comenzii SCAN în următoarea iterație, pentru a continua procesul de iterație anterioară. În același timp, cu SCAN, utilizatorii pot ajusta comenzile folosind modul nume cheie și opțiunile de numărare. Comenzile legate de SCAN includ, de asemenea, comenzi SSSCAN, comenzi HSCAN și comenzi ZSCAN, care sunt folosite pentru colecții, chei hash și continuări, respectiv. 5. Folosirea scripturilor Lua pe partea serverului În procesul de utilizare a Redis, suportul pentru scripturile Lua oferă fără îndoială dezvoltatorilor un mediu de dezvoltare foarte prietenos, eliberând astfel creativitatea utilizatorilor. Atunci când sunt folosite corect, scripturile Lua pot aduce îmbunătățiri semnificative în performanță și consum de resurse. În loc să transmită date către CPU, scripturile îți permit să execuți logica cea mai apropiată de date, reducând latența rețelei și transferul redundant de date. În Redis, un caz de utilizare clasic pentru Lua este filtrarea sau agregarea datelor într-o aplicație. Prin încapsularea fluxului de lucru de procesare într-un script, îl poți chema pur și simplu pentru a obține un răspuns mai mic folosind puține resurse în mai puțin timp. Sfat de profesionist:Lua este grozav, dar are și unele probleme, cum ar fi dificultățile de raportare și gestionarea bug-urilor. O abordare inteligentă este să folosești funcția Pub/Sub a lui Redis și să lași scriptul să trimită mesajele de jurnal printr-un canal dedicat. Apoi creează un proces de abonat și procesează-l corespunzător.
|