HSCAN în Redis & In-Memory Data Store

Parcurge treptat câmpurile unui hash mare, cu un cursor, fără să blocheze serverul.

Sintaxă comandă
HSCAN key cursor [MATCH pattern] [COUNT count] [NOVALUES]

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.
  • MATCH se 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ă.