Redis Hscan

Redis Hscan
Gli hash Redis sono una raccolta di campi di stringa e coppie di valore stringa. È un candidato ideale per rappresentare entità del mondo reale all'interno della mente. Gli hash sono molto efficienti dalla memoria e ognuno può contenere più di quattro miliardi di coppie di valore sul campo.

Poiché gli hash Redis ti consentono di archiviare anche grandi quantità di coppie di valore sul campo, è necessario facilitare anche l'iterazione rispetto a questo tipo di raccolta. Quindi, l'iterazione incrementale basata sul cursore è stata implementata con il comando HSCAN. In questa guida, ci concentreremo maggiormente sul comando HSCAN e sui suoi casi d'uso.

Il comando hscan

Il comando hscan viene utilizzato per iterare sui campi e i valori di un hash Redis memorizzato a una determinata chiave. Non blocca il server come tasti o comandi SMEMBER. Invece, l'HSCAN restituisce una parte degli elementi in ciascuna iterazione con una complessità temporale costante O (1). L'unico aspetto negativo di questo comportamento è che il comando hscan ha una garanzia limitata degli elementi hash restituiti in un determinato momento perché l'hash può essere modificato durante le iterazioni. Non è il caso di comandi di blocco come Smembers, che garantiscono che tutti gli elementi verranno restituiti in un determinato momento.

Sintassi

Il comando HSCAN deriva dal comando di scansione. Quindi, il comando HSCAN ha quasi la stessa sintassi della scansione, tranne per il fatto che il comando di scansione non richiede un chiave Come primo argomento perché iterate sulle chiavi memorizzate nel database di Redis corrente.

Hscan Hash_key Cursore [Match Pattern] [Conteggio Conte_per_iteration]

Tasto cancelletto: La chiave dell'hash.

Cursore: Il valore del cursore inizia a 0 e termina a 0 se è stata completata un'iterazione completa.

INCONTRO: Uno schema da abbinare quando si recuperano elementi in ogni iterazione. Solo gli elementi abbinati verranno restituiti al cliente.

CONTARE: Il numero di elementi che verranno restituiti in ogni iterazione.

Il set di risultati restituiti per iterazione contiene un paio di elementi. Il primo è un numero intero senza segno a 64 bit che rappresenta il cursore da passare alla chiamata successiva. A parte questo, verrà restituita una serie di coppie di valore di campo hash.

Caso di utilizzo 01: Ottieni tutte le informazioni di un dipendente

Supponiamo che un'azienda debba mantenere i dettagli dei propri dipendenti in un archivio di dati con un consumo di memoria limitato. Quindi, l'hash Redis è la struttura dei dati ideale da utilizzare in questo caso perché rappresenteremo oggetti dei dipendenti del mondo reale con le loro proprietà.

Innanzitutto, creeremo un hash Redis CompanyAempDetails: 1002 con alcune coppie di valore di campo come segue. Il comando HMSET può essere utilizzato per aggiungere più coppie di valori di campo a un hash.

HMSET COMPANYAEMPDETAILS: 1002 EMPID 1002 EMPNAME "Jack Anwar" Empsalary $ 40000 Empaddress "23/4, Redis Avenue, New York" Empcontact +9569492022 EMPAGE 45 Emplood O + EmpveHicle Mercedez Empcsegnation "Lead Engineer"

Iteliamo sull'oggetto dipendente e recuperiamo tutte le informazioni utilizzando il comando HSCAN come segue. Dobbiamo iniziare dal cursore 0.

Hscan CompanyAempDetails: 1002 0

Produzione

Il valore del cursore è 0 nel set di risultati restituiti, il che significa che tutti gli elementi sono stati restituiti dalla prima iterazione. Poiché il numero di elementi è piccolo, gli hash Redis rappresentano questi elementi usando una codifica piena di allocazione singola. Pertanto, fino a quando non viene soddisfatta una dimensione massima del pacchetto o un numero di elementi, il comando restituirà tutti gli elementi nell'hash. Se viene specificato l'argomento del conteggio, verrà ignorato in quel caso. Questa è chiamata un'iterazione completa perché alla fine della prima iterazione, abbiamo ricevuto tutti e nove gli elementi. Se avessimo decine di coppie di valore sul campo, sarebbero rappresentate come una tabella di hash in memoria. Quindi, ci vorrebbero diverse iterazioni per restituire tutti gli elementi.

Caso di utilizzo 02: Ottieni il conteggio dei visitatori per i siti Web il cui dominio di alto livello è ".com "

Il comando HSCAN può essere utilizzato per filtrare gli elementi restituiti in base a una corrispondenza. Un argomento di corrispondenza dovrebbe essere superato.

Supponiamo che un'azienda debba monitorare i conteggi dei visitatori per i loro siti Web. Possiamo creare un hash abccompany: visitatori e aggiungere elementi come segue.

HMSET ABCCompany: visitatori "www.ABC.Me "200000" www.HTRS.com "123000" www.KDKDK.com "560000" www.QPSPS.LK "120000" www.Dioso.com "90000

Possiamo usare il comando hgetall per verificare come appare l'hash.

Hgetall Abccompany: visitatori

Ora la società ha l'obbligo di iterare su questo hash e recuperare i conteggi dei visitatori per i siti Web con il ".com " dominio di alto livello. Passiamo l'argomento della partita al comando hscan come segue.

Hscan Abccompany: visitatori 0 Match *.com*

Ciò dovrebbe idealmente restituire tre membri su cinque membri, come mostrato da seguito.

Conclusione

In sintesi, il comando HSCAN viene utilizzato per iterare su una raccolta di coppie di valore di campo hash. Questo comando deriva dal comando di scansione genitore ma con un leggero cambiamento nel primo argomento da passare in cui Hscan prende la chiave hash come primo argomento. Come discusso nei casi d'uso, il comando HSCAN può essere utilizzato in diversi modi specificando gli argomenti di corrispondenza e conteggio, in cui è possibile recuperare elementi che corrispondono a uno schema specifico e limitano il conteggio degli elementi restituiti per iterazione. Nel complesso, il comando HSCAN può essere utile quando si sta recuperando elementi da una raccolta senza bloccare il server o il client.