Ce face HGETALL / HKEYS / HVALS / HLEN
HGETALL întoarce întregul hash. În redis-cli (protocolul RESP2) răspunsul este o listă plată în care câmpurile și valorile alternează: câmp, valoare, câmp, valoare. Bibliotecile client o transformă de obicei în dicționar.
HKEYS întoarce doar numele câmpurilor, HVALS doar valorile, iar HLEN câte câmpuri are hash-ul. Pentru o cheie inexistentă primești o listă goală, respectiv 0.
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia hash-ului. |
Ce returnează
HGETALL/HKEYS/HVALS: o listă (goală dacă cheia nu există). HLEN: un (integer).
Exemple
Exemplul 1: Tot profilul dintr-o comandă
Câmpurile și valorile alternează în răspuns.
HSET utilizator:7 nume Ana oras Iasi varsta 31
HGETALL utilizator:7
HLEN utilizator:7
Ieșire în redis-cli
127.0.0.1:6379> HSET utilizator:7 nume Ana oras Iasi varsta 31
(integer) 3
127.0.0.1:6379> HGETALL utilizator:7
1) "nume"
2) "Ana"
3) "oras"
4) "Iasi"
5) "varsta"
6) "31"
127.0.0.1:6379> HLEN utilizator:7
(integer) 3
Exemplul 2: Doar câmpurile sau doar valorile
Pentru o cheie inexistentă, redis-cli afișează (empty array).
HKEYS utilizator:7
HVALS utilizator:7
HGETALL utilizator:999
Ieșire în redis-cli
127.0.0.1:6379> HKEYS utilizator:7
1) "nume"
2) "oras"
3) "varsta"
127.0.0.1:6379> HVALS utilizator:7
1) "Ana"
2) "Iasi"
3) "31"
127.0.0.1:6379> HGETALL utilizator:999
(empty array)
Greșeli frecvente
- Pe hash-uri cu sute de mii de câmpuri,
HGETALLblochează serverul și trimite mulți octeți prin rețea. FoloseșteHSCAN. - Nu te baza pe ordinea câmpurilor: la hash-urile mari ordinea nu este cea de inserare.
Comenzi înrudite
HSET: Scrie unul sau mai multe câmpuri într-un hash (un obiect cu perechi câmp–valoare), creând hash-ul dacă lipsește.HMGET: Citește mai multe câmpuri dintr-un hash într-o singură comandă, în ordinea cerută.HSCAN: Parcurge treptat câmpurile unui hash mare, cu un cursor, fără să blocheze serverul.HGET: Citește valoarea unui singur câmp dintr-un hash; întoarce nil dacă câmpul sau cheia lipsesc.