Popularul motor de stocare Redis este un instrument excelent și obligatoriu în arsenalul oricărui dezvoltator de software. Motorul de stocare în memorie permite stocarea și recuperarea datelor extraordinar de rapide, până la 32 de milioane de interogări pe secundă, făcându-l o completare principală pentru orice motor major de baze de date.
Să ne aprofundăm și să învățăm cum să ne grăbim operațiunile online.
Redis: Pro vs. Contra
Cel mai mare beneficiu al Redis este că este un depozit de date pur în memorie , ceea ce înseamnă că este extraordinar de rapid, deoarece baza de date este stocată în RAM, prin urmare nu sunt necesare operațiuni de I/O de fișiere pe hard disk.
Alte beneficii suplimentare sunt simplitatea, suportul pentru clustering prin Redis-cluster, plus suportul pentru opt tipuri de date diferite, oferindu-vă flexibilitatea necesară pentru stocarea și gestionarea datelor dvs. după cum este necesar.
Cu toate acestea, cel mai mare dezavantaj al său este, de asemenea, faptul că este doar un depozit de date în memorie, prin urmare vine cu limitări de dimensiune. Depinde de infrastructura serverului dvs., dar de dragul acestui articol și al simplității, baza de date tipică Redis va deține maximum 2-4 GB de date.
Aceasta înseamnă că Redis este folosit pentru a completa motoarele de baze de date utilizate în mod popular, cum ar fi mySQL, PostgreSQL și MongoDB, și nu este conceput ca un înlocuitor. Principalele utilizări pentru Redis includ un cache, date temporare/recente care vor expira într-o perioadă scurtă de timp sau mici bucăți de date care sunt accesate frecvent.
Cum se instalează Redis
Presupunând că rulați Ubuntu sau orice distribuție Linux care conține comanda apt-get , pentru a instala Redis, executați pur și simplu următoarea comandă în terminal:
sudo apt-get install redis-server
Apoi, verificați pentru a vă asigura că Redis a fost instalat cu succes. În terminal, rulați comanda:
redis-cli --version
Aceasta ar trebui să imprime versiunea Redis pe care o rulați și, presupunând acest lucru, rulați următoarea comandă pentru a vă conecta la Redis:
redis-cli
Acest lucru vă va oferi un prompt Redis non-standard în terminal, care arată ceva de genul:
127.0.0.1:6379>
Comenzi șiruri
Fiecare intrare în Redis este identificată printr-o cheie, care poate fi orice șir fără spații albe pe care doriți. Șirurile de caractere conțin doar o singură valoare și, de exemplu, executați următoarele comenzi la promptul Redis pentru a seta o valoare pentru câteva taste.
127.0.0.1:6379> set full_name "John Doe" 127.0.0.1:6379> set units 5
Acum puteți lista toate cheile în prezent din baza de date Redis cu comanda chei.
127.0.0.1:6379> keys *
Acest lucru va avea ca rezultat afișarea celor două chei pe care le-ați setat anterior, full_name și units . Este posibil să vedeți valoarea acestor chei cu comanda get.
127.0.0.1:6379> get full_name "John Doe" 127.0.0.1:6379> get units 5
Ștergerea cheilor se poate face cu ușurință cu comanda del.
127.0.0.1:6379> del full_name
De asemenea, este posibil să incrementați rapid un număr întreg cu comanda hincrby . Următoarele vor crește tasta „unități” de la 5 la 7.
127.0.0.1:6379> incrby units 2
Listează comenzi
Listele din Redis sunt matrice unidimensionale cu o anumită ordine și permit elemente duplicate în diferite poziții ale listei. Elementele pot fi adăugate la stânga sau la dreapta a unei liste cu lpush și rpush comenzi.
127.0.0.1:6379> lpush colors blue 127.0.0.1:6379> rpush colors red yellow green
După cum puteți vedea din exemplul de mai sus, puteți împinge mai multe articole într-o listă într-o singură comandă. Acum putem vizualiza toate elementele din listă folosind comanda lrange .
127.0.0.1:6379> lrange colors 0 -1
Există două numere întregi la sfârșitul comenzii, primul care definește poziția în listă de la care să înceapă, iar al doilea este numărul de elemente de returnat cu -1 însemnând toate elementele. Rezultatul comenzii de mai sus va fi albastru, roșu, galben, verde .
De asemenea , puteți elimina elemente de pe fiecare capăt al unei liste folosind lpop și RPOP comenzi.
127.0.0.1:6379> lpop colors blue 127.0.0.1:6379> rpop colors green
De asemenea, puteți obține numărul de elemente dintr-o listă cu comanda llen .
127.0.0.1:6379> llen colors (integer) 2
În sfârșit, puteți elimina un element dintr-o listă prin comanda lrem .
127.0.0.1:6379> lrem colors 1 green (integer) 1
Comanda lrem începe cu numele listei, urmat de numărul de apariții de eliminat și de numele elementului de eliminat. Va returna numărul de apariții găsite și eliminate din listă.
Comenzi hash
Unul dintre cele mai populare tipuri de date din Redis este hashurile, care vă permit să stocați mai multe perechi cheie-valoare într-o singură intrare. Cheia nu trebuie să existe deja și definiți oricând perechi cheie-valoare cu comanda hset .
127.0.0.1:6379> hset user:581 full_name "Jane Doe" 127.0.0.1:6379> hset user:581 points 500
De asemenea, puteți defini mai multe perechi cheie-valoare ale unui hash într-o singură comandă folosind comanda hmset .
127.0.0.1:6379> hmset user:581 email [email protected] gender F
Hash-ul identificat de utilizatorul cheie :581 are acum un total de patru perechi cheie-valoare, toate putând fi preluate cu ușurință cu comanda hgetall .
127.0.0.1:6379> hgetall user:581 1) "full_name" 2) "Jane Doe" 3) "points" 4) "500" 5) "email" 6) "[email protected]" 7) "gender" 8) "F"
De asemenea, puteți obține valoarea unei singure perechi cheie-valoare dintr-un hash folosind comanda get .
127.0.0.1:6379> hget user:581 email "[email protected]"
Pentru orice numere întregi din hash, le puteți incrementa cu o sumă specificată cu comanda code hincrby .
127.0.0.1:6379> hincrby user:581 points 20 (integer) 520
Valoarea cheii de puncte din hash a fost acum incrementată cu 20 la 520. O singură pereche cheie-valoare dintr-un hash poate fi ștearsă cu comanda hdel .
127.0.0.1:6379> hdel user:581 gender
Alternativ, puteți, de asemenea, să ștergeți un hash care include în întregime toate perechile cheie-valoare utilizând comanda del .
127.0.0.1:6379> del user:581
Chei Redis care expiră
O altă caracteristică excelentă a Redis este capacitatea de a expira automat cheile după un număr definit de secunde folosind comanda expire . Vă rugăm să rețineți că puteți expira doar cheile complete și nu elementele singulare dintr-o listă sau hash. De exemplu:
127.0.0.1:6379> expire full_name 10
Aceasta va seta un timp de expirare de 10 secunde pentru cheia full_name pe care ați creat-o în secțiunea șiruri. După rularea comenzii de mai sus, așteptați 10 secunde, apoi încercați din nou să recuperați valoarea cheii.
127.0.0.1:6379> get full_name (nil)
După cum era de așteptat, cheia a expirat acum, prin urmare, obținem nulă.
Conectați-vă la Redis cu PHP
Acum că ați învățat elementele de bază despre cum să stocați și să preluați date cu Redis, este timpul să le conectați la software-ul dvs. Toate limbajele de programare au module/extensii pentru Redis, dar pentru acest exemplu, vom folosi PHP.
Mai întâi trebuie să instalați extensia PHP-Redis, deoarece nu este instalată implicit. În terminal, executați comanda.
sudo apt-get install php-redis
Odată instalat, asigurați-vă că reporniți PHP-fpm, astfel încât extensia să fie încărcată corect. Iată câteva coduri PHP care se conectează și interfață cu Redis.
<> // Connect to redis $conn = new redis(); try { $conn->connect('127.0.0.1', 6379, 5); } catch (RedisException $e) { die("Unable to connect to redis"); } // Set string $conn->set('country', 'Canada'); // Get string $value = $conn->get('country'); echo "Country is: $value "; // Define a profile $profile = [ 'username' => 'mike', 'full_name' => 'Mike Smith', 'email' => '[email protected]', 'country' => 'Australia' ]; // Create a hash $conn->hmset('user:188', $profile); // Get all values of the profile hash $values = $conn->hgetall('user:188'); print_r($values); // Get only the e-mail address $email = $conn->hget('user:188', 'email'); echo "E-mail is: $email "; // Expire the hash in 15 seconds $conn->expire('user:188', 15);
Exemplul de cod de mai sus ar trebui să fie destul de simplu. Se conectează mai întâi la Redis cu un timeout de 5 secunde, apoi continuă să seteze și să primească un șir și hash. Toate comenzile Redis pot fi efectuate prin POO apelându -le direct din obiectul Redis, așa cum este ilustrat mai sus.
Ești pe drumul tău!
Felicitări, ați învățat elementele de bază despre cum să stocați și să preluați date cu o viteză extraordinară prin intermediul motorului de stocare Redis, inclusiv cum să vă conectați și să interfațați cu Redis folosind PHP.
Vă rugăm să rețineți că acest articol acoperă doar elementele de bază, iar pagina Tipuri de date Redis a documentației este un loc minunat pentru a continua explorarea Redis și toate funcționalitățile sale.