Commande redis sscan

Commande redis sscan
Redis est un magasin de valeurs clés qui est livré avec plusieurs types de données intégrés. Il comprend également des types de collecte, tels que des ensembles, des hachages et des ensembles triés. Chaque fois que vous avez des types de collecte, il est indispensable d'avoir une méthode pour parcourir les éléments d'une collection. Habituellement, dans un contexte de programmation, nous utilisons des itérateurs à cet effet.

Redis prend en charge les itérateurs basés sur le curseur. Ces itérateurs peuvent faire une parole progressivement dans la collection et renvoyer un nombre limité d'éléments. Dans le même temps, il renvoie l'index / ID du curseur mis à jour comme un entier à utiliser dans la prochaine itération. Un curseur est un pointeur maintenu par l'itérateur pour garder le nouvel emplacement après chaque itération.

L'itérateur de scan

La commande de scan est la base de nombreux autres itérateurs Redis. Cet itérateur ne garantit pas le nombre d'éléments renvoyés dans chaque boucle. Il peut retourner 0 éléments ou tous les éléments d'une itération donnée. De plus, il pourrait produire le même élément plusieurs fois car la collection peut changer, ce qui est un inconvénient de l'itérateur de scan. La commande scan renvoie deux valeurs dans chaque exécution. La première valeur est un ID de référence au curseur, et la deuxième valeur est une collection d'éléments. Ça commence toujours du curseur 0. Plusieurs autres itérateurs sont dérivés de l'itérateur de scan, comme SSCAN, HSCAN et ZSCAN. Ces commandes ont le même comportement mais fonctionnent sur différents types de collections.

L'itération complète

Étant donné que la commande de numérisation ne garantit pas le nombre d'éléments renvoyés dans chaque itération, le seul moyen de notifier que l'itérateur a été bouclé dans toute la collection est de vérifier l'ID de référence ou index du curseur renvoyé dans chaque exécution. Si le curseur retourné est 0, cela indique que tous les éléments ont été itérés. Il s'appelle une itération complète.

La commande sscan

L'itérateur SSCAN est dérivé de l'itérateur de scan. Par conséquent, tous les comportements sont étendus à partir de la commande de scan, mais il itère uniquement sur les types de définition.

Syntaxe

SSCAN SET_KEY Cursor [Match Pattern] [Count Count]

set_key: C'est la clé de l'ensemble.

le curseur: ID de référence du curseur suivant, qui est retourné après chaque appel.

La correspondance et le nombre sont deux paramètres facultatifs qui peuvent être utilisés pour filtrer les éléments retournés en fonction d'un modèle donné et limiter le nombre d'éléments retournés.

Cette commande rendrait le curseur suivant et un tableau d'éléments. L'ID de curseur retourné peut être transmis à la commande sscan dans l'appel suivant.

Exemple 1: itérer sur un petit ensemble

Créons un ensemble redis en utilisant la commande SADD.

sadd setofcolors vert rouge noir blanc bleu rose rose gris orange violet jaune

La commande précédente créera un nouvel ensemble setofcolors et ajouter 10 membres de manière non ordonnée. Nous pouvons utiliser la commande SMEMBERS pour vérifier l'opération précédente.

Smembres setofcolors

Comme prévu, l'ensemble setofcolors a été créé avec succès.

Nous pouvons utiliser la commande sscan pour itérer sur le setofcolors Définir comme indiqué dans ce qui suit:

sscan setofcolors 0

Comme mentionné, la commande doit commencer par le curseur 0. La clé de l'ensemble a également été transmise. Depuis le setofcolors ne contient que 10 membres, la commande SSCAN pourrait renvoyer tous les éléments de la première itération. Parce que le setofcolors est un ensemble relativement petit.

Sortir

Comme discuté, la commande a renvoyé deux valeurs car la première est 0. Cela signifie que ce qui précède est une itération complète. Il n'est pas nécessaire d'appeler à nouveau SSCAN. Tous les dix membres ont été retournés comme la deuxième valeur de retour de cette commande.

Exemple 2: itérez sur un grand set

Nous créerons un ensemble avec plus de 20 membres.

alphabet sadd 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

Itéraquons sur le alphabet ensemble.

Alphabet SSCAN 0

Comme d'habitude, nous avons commencé avec le curseur 0. De plus, la touche définie a été transmise en tant que alphabet. Il n'a renvoyé que 11 membres de la première itération, comme indiqué dans ce qui suit:

Le curseur suivant est 6. Appelons à nouveau la commande SSCAN avec les arguments pertinents.

Maintenant, il a retourné 10 autres membres et le curseur suivant comme 13. Nous devons rappeler à nouveau la commande SSCAN pour terminer la pleine itération.

La valeur du curseur renvoyé est 0, ce qui signifie que l'itérateur a itéré dans l'ensemble de l'ensemble.

Exemple 3: correspondance de motifs avec SSCAN

Nous pouvons utiliser le paramètre de correspondance pour filtrer les membres retournés en fonction d'un modèle spécifié. Créons un nouvel ensemble appelé noms d'utilisateur avec certains membres.

Noms d'utilisateur SADD John Norek Pinku Juwana Jorgia Noton Derek Desman Julia Jumini Piter pino Demian

Nous appellerons la commande SSCAN avec l'argument de match pour récupérer tous les noms d'utilisateur en commençant par «JU».

Noms d'utilisateur SSCAN 0 Match Ju *

Sortir

Nous avons trois noms d'utilisateur à partir de «JU» dans l'ensemble. Mais il n'en a renvoyé qu'un dans cette itération. Par conséquent, nous devons rappeler à nouveau la commande SSCAN avec le curseur mis à jour.

Noms d'utilisateur SSCAN 7 Match Ju *

Sortir

L'itérateur a bouclé à travers tous les éléments de l'ensemble, et nous avons trois membres correspondant à notre modèle.

Exemple 4: Limitez le nombre d'éléments par appel

La commande redis sscan renvoie environ dix éléments par appel par défaut, mais vous pouvez explicitement spécifier le nombre d'éléments à retourner par appel. Qui peut donner un coup de pouce considérable à votre application.

Utilisons l'ensemble précédent et limitons le nombre d'éléments renvoyés par appel à trois. Habituellement, le nombre d'éléments retournés fluctuera à environ 3. Nous pouvons spécifier la valeur d'argument du nombre pour réaliser ce comportement.

Noms d'utilisateur SSCAN 0 Compte 3

Sortir

Habituellement, il retourne environ 10 membres, mais maintenant ce ne sont que 4 éléments. La même chose s'est produite avec les appels suivants.

Noms d'utilisateur SSCAN 6 Compte 3
Noms d'utilisateur SSCAN 1 Compte 3
Noms d'utilisateur SSCAN 7 Compte 3

Ceci est très utile lorsque vous avez affaire à de grands ensembles.

Conclusion

Redis comprend plusieurs types de collecte, tels que des ensembles, des hachages et des ensembles triés. Habituellement, les itérateurs peuvent être utilisés pour faire une boucle à travers les types de collecte. L'itérateur de scan est habitué pour itérer les touches dans une base de données redis. Il s'agit d'un itérateur basé sur le curseur qui renvoie deux valeurs par appel, où le premier est le curseur mis à jour et le second est le tableau d'éléments. La commande SSCAN a les mêmes comportements que la commande Scan, mais il est spécifique à définir les types. Il peut également parcourir un ensemble basé sur un modèle. De plus, la commande est capable de limiter le nombre d'éléments retournés par appel.