Comando Redis Sscan

Comando Redis Sscan
Redis è un negozio di valore chiave fornito con diversi tipi di dati integrati. Include anche tipi di raccolta, come set, hash e set ordinati. Ogni volta che hai tipi di raccolta, è un must per avere un metodo per eseguire lo spostamento degli elementi di una raccolta. Di solito, in un contesto di programmazione, usiamo gli iteratori a questo scopo.

Redis supporta iteratori a base di cursori. Questi iteratori possono eseguire in modo incrementale attraverso la raccolta e restituire un numero limitato di elementi. Allo stesso tempo, restituisce l'indice/ID del cursore aggiornato come numero intero da utilizzare nella prossima iterazione. Un cursore è un puntatore mantenuto dall'iteratore per mantenere la nuova posizione dopo ogni iterazione.

L'iteratore di scansione

Il comando di scansione è la base per molti altri iteratori Redis. Questo iteratore non garantisce il numero di elementi restituiti in ogni loop. Potrebbe restituire 0 elementi o tutti gli elementi in una data iterazione. Inoltre, potrebbe produrre lo stesso elemento più volte perché la raccolta potrebbe cambiare, il che è uno svantaggio nell'iteratore di scansione. Il comando di scansione restituisce due valori in ciascuna esecuzione. Il primo valore è un ID di riferimento al cursore e il secondo valore è una raccolta di elementi. Inizia sempre dal cursore 0. Diversi altri iteratori derivano dall'iteratore di scansione, come SSCAN, HSCAN e ZSCAN. Questi comandi hanno lo stesso comportamento ma operano su diversi tipi di raccolte.

La completa iterazione

Poiché il comando scanta. Se il cursore restituito è 0, indica che tutti gli elementi sono stati iterati. Si chiama iterazione completa.

Il comando sscan

L'iteratore SSCAN deriva dall'iteratore di scansione. Quindi, tutti i comportamenti sono estesi dal comando di scansione, ma iterato solo sui tipi impostati.

Sintassi

Cursore SSCAN set_key [pattern match] [conteggio conteggio]

set_key: Questa è la chiave del set.

cursore: ID di riferimento del seguente cursore, che viene restituito dopo ogni chiamata.

La corrispondenza e il conteggio sono due parametri opzionali che possono essere utilizzati per filtrare gli elementi restituiti in base a un determinato modello e limitare il numero di elementi restituiti.

Questo comando restituirebbe il cursore successivo e una serie di elementi. L'ID cursore restituito può essere passato al comando sscan nella chiamata successiva.

Esempio 1: iterare su un piccolo set

Creiamo un set di Redis usando il comando SADD.

SADD SETOFCOLORS rosso verde nero bianco blu blu arancione grigio viola giallo

Il comando precedente creerà un nuovo set setofcolors e aggiungi 10 membri in modo non ordinato. Possiamo usare il comando Smembers per verificare l'operazione precedente.

SMARMERS SETOFCOLORS

Come previsto, il set setofcolors è stato creato con successo.

Possiamo usare il comando sscan per iterare il setofcolors Impostare come mostrato nel seguente:

sscan setOfColors 0

Come accennato, il comando dovrebbe iniziare con il cursore 0. Anche la chiave del set è stata passata. Dal setofcolors Contiene solo 10 membri, il comando sscan potrebbe restituire tutti gli elementi nella prima iterazione. Perché il setofcolors è un set relativamente piccolo.

Produzione

Come discusso, il comando ha restituito due valori come il primo è 0. Significa che quanto sopra è un'iterazione completa. Non è necessario chiamare di nuovo Sscan. Tutti e dieci i membri sono stati restituiti come secondo valore di ritorno di questo comando.

Esempio 2: iterare su un grande set

Creeremo un set con più di 20 membri.

SADD Alfabet A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Iteramiamo sul alfabeto impostato.

SSCAN Alphabet 0

Come al solito, abbiamo iniziato con il cursore 0. Inoltre, il tasto set è stato approvato come il alfabeto. Ha restituito solo 11 membri dalla prima iterazione, come mostrato nella seguente:

Il prossimo cursore è 6. Chiamiamo di nuovo il comando sscan con gli argomenti pertinenti.

Ora ha restituito altri 10 membri e il cursore successivo come 13. Dobbiamo chiamare di nuovo il comando sscan per finire la completa iterazione.

Il valore del cursore restituito è 0, il che significa che l'iteratore ha iterato attraverso l'intero set.

Esempio 3: corrispondenza di pattern con sscan

Possiamo utilizzare il parametro Match per filtrare i membri restituiti in base a uno schema specificato. Creiamo un nuovo set chiamato nomi utente con alcuni membri.

Nome utente SADD John Norek Pinku Juwana Jorgia Noton Derek Desman Julia Jumini Piter Pinso Demian

Chiameremo il comando sscan con l'argomento della partita per recuperare tutti i nomi utente che iniziano con "JU".

SSCAN Nome utente 0 Match Ju*

Produzione

Abbiamo tre nomi utente a partire da "ju" nel set. Ma ne ha restituiti solo uno in questa iterazione. Quindi, dobbiamo chiamare di nuovo il comando sscan con il cursore aggiornato.

SSCAN Nome utente 7 Match Ju*

Produzione

L'iteratore ha fatto il giro di tutti gli elementi nel set e abbiamo tre membri che corrispondono al nostro modello.

Esempio 4: limitare il numero di elementi per chiamata

Il comando Redis Sscan restituisce circa dieci elementi per chiamata per impostazione predefinita, ma è possibile specificare esplicitamente il numero di elementi da restituire per chiamata. Ciò può dare una notevole spinta delle prestazioni alla tua applicazione.

Usiamo il set precedente e limitiamo il numero di elementi restituiti per chiamata a tre. Di solito, il conteggio degli elementi restituiti fluttuerà a circa 3. Possiamo specificare il valore dell'argomento di conteggio per raggiungere questo comportamento.

nomi utente SSCan 0 Conteggio 3

Produzione

Di solito, ritorna circa 10 membri, ma ora sono solo 4 elementi. Lo stesso è successo anche con le seguenti chiamate.

Nomi utente SSCAN 6 CONT 3
nomi utente SSCan 1 Conteggio 3
nomi utente SSCan 7 Conteggio 3

Questo è molto utile quando hai a che fare con set di grandi dimensioni.

Conclusione

Redis include diversi tipi di raccolta, come set, hash e set ordinati. Di solito, gli iteratori possono essere utilizzati per lottare attraverso i tipi di raccolta. L'iteratore di scansione viene utilizzato per iterare le chiavi in ​​un database Redis. È un iteratore basato sul cursore che restituisce due valori per chiamata, in cui il primo è il cursore aggiornato e il secondo è l'array di elementi. Il comando sscan ha gli stessi comportamenti del comando di scansione, ma è specifico per impostare i tipi. Può scansionare attraverso un set in base a uno schema. Inoltre, il comando è in grado di limitare il numero di elementi restituiti per chiamata.