Ce face HSCAN
HSCAN funcționează ca SCAN, dar în interiorul unui singur hash: pornești cu cursorul 0 și repeți cu cursorul primit până când acesta devine 0. Fiecare răspuns conține un lot de perechi câmp–valoare.
MATCH filtrează câmpurile după un tipar glob, iar NOVALUES (Redis 7.4+) întoarce doar numele câmpurilor. La hash-urile mici (codificare listpack), Redis întoarce de obicei totul dintr-o dată, cu cursorul 0.
Parametri
| Parametru | Descriere |
|---|---|
cursor |
Poziția de continuare; începe cu 0. |
MATCH pattern |
Doar câmpurile care se potrivesc tiparului. |
COUNT count |
Câte elemente să verifice aproximativ la fiecare pas (implicit 10). |
NOVALUES |
Întoarce doar câmpurile, fără valori (Redis 7.4+). |
Ce returnează
O listă cu două elemente: cursorul următor și lotul de câmpuri (cu valori, dacă lipsește NOVALUES).
Exemple
Exemplul 1: Câmpurile cu prefix dintr-un hash de setări
Hash-ul e mic, deci totul vine într-un singur lot, cu cursorul 0.
HSET setari:ana notificari:email da notificari:sms nu tema dark
HSCAN setari:ana 0 MATCH notificari:*
Ieșire în redis-cli
127.0.0.1:6379> HSET setari:ana notificari:email da notificari:sms nu tema dark
(integer) 3
127.0.0.1:6379> HSCAN setari:ana 0 MATCH notificari:*
1) "0"
2) 1) "notificari:email"
2) "da"
3) "notificari:sms"
4) "nu"
Exemplul 2: Doar numele câmpurilor
Cu NOVALUES primești doar câmpurile.
HSCAN setari:ana 0 NOVALUES
Ieșire în redis-cli
127.0.0.1:6379> HSCAN setari:ana 0 NOVALUES
1) "0"
2) 1) "notificari:email"
2) "notificari:sms"
3) "tema"
Greșeli frecvente
- Ca și la
SCAN, un câmp poate apărea de două ori dacă hash-ul se schimbă în timpul parcurgerii. MATCHse aplică după citirea lotului: un lot poate fi gol chiar dacă mai sunt potriviri. Continuă până la cursorul 0.
Comenzi înrudite
KEYS vs SCAN: KEYS listează toate cheile după un tipar dintr-odată și blochează serverul; SCAN le parcurge treptat, cu un cursor.HGETALL / HKEYS / HVALS / HLEN: HGETALL întoarce toate câmpurile și valorile unui hash; HKEYS doar câmpurile, HVALS doar valorile, HLEN numărul lor.SMEMBERS: Întoarce toți membrii unui set, fără o ordine garantată.