Redis hscan

Redis hscan
Les hachages redis sont une collection de champs de chaîne et de paires de valeurs de chaîne. C'est un candidat idéal pour représenter des entités du monde réel à l'intérieur de l'esprit. Les hachages sont très efficaces de la mémoire et chacun peut contenir plus de quatre milliards de paires de valeurs de champ.

Étant donné que Redis Hashs vous permet de stocker de grandes quantités de paires de valeurs sur le terrain, l'itération sur ce type de collection doit également être facilitée. Ainsi, l'itération incrémentielle basée sur le curseur a été mise en œuvre avec la commande HSCAN. Dans ce guide, nous nous concentrerons davantage sur la commande HSCAN et ses cas d'utilisation.

La commande hscan

La commande HSCAN est utilisée pour parcourir les champs et les valeurs d'un hachage redis stocké à une clé donnée. Il ne bloque pas le serveur comme les touches ou les commandes de smembers. Au lieu de cela, le HSCAN renvoie une partie des éléments de chaque itération avec une complexité de temps O (1). Le seul inconvénient de ce comportement est que la commande HSCAN a une garantie limitée des éléments de hachage retournés à un moment donné car le hachage peut être modifié pendant les itérations. Ce n'est pas le cas avec des commandes de blocage comme les SMEMBERS, qui garantissent que tous les éléments seront retournés à un moment donné.

Syntaxe

La commande hscan dérive de la commande de scan. Par conséquent, la commande HSCAN a presque la même syntaxe que la numérisation, sauf que la commande de scan ne nécessite pas un clé comme le premier argument car il itère sur les clés stockées dans la base de données redis actuelle.

HSCAN HASH_KEY Cursor [Match Pattern] [count count_per_iteration]

Touche dièse: La clé du hachage.

Le curseur: La valeur du curseur commence à 0 et se termine à 0 si une itération complète est terminée.

CORRESPONDRE: Un modèle à correspondre lors de la récupération des éléments dans chaque itération. Seuls les éléments appariés seront retournés au client.

COMPTER: Le nombre d'éléments qui seront retournés dans chaque itération.

Le résultat retourné par itération contient quelques éléments. Le premier est un entier non signé 64 bits qui représente le curseur à passer dans l'appel suivant. En dehors de cela, une gamme de paires de valeurs de champ de hachage sera retournée.

Cas d'utilisation 01: Obtenez toutes les informations d'un employé

Supposons qu'une entreprise doit maintenir les détails de ses employés dans un magasin de données avec une consommation de mémoire limitée. Ainsi, le hash redis est la structure de données idéale à utiliser dans ce cas car nous allons représenter des objets d'employés du monde réel avec leurs propriétés.

Tout d'abord, nous créerons un hachage redis CompanyaEmpDetails: 1002 avec quelques paires de valeurs de champ comme suit. La commande hmset peut être utilisée pour ajouter plusieurs paires de valeurs de champ à un hachage.

Hmset CompanyaEmpDetails: 1002 Empid 1002 EMPNAME "Jack Anwar" EMPSALARY 40000 $ EMPADdress "23/4, Redis Avenue, NYC" Empcontact +9569492022 Empage 45 Empblood O + EmpveHile Mercedez Empdegnation "Ingénieur principal"

Itrérons l'objet de l'employé et récupérons toutes les informations à l'aide de la commande HSCAN comme suit. Nous devons commencer du curseur 0.

HSCAN COMPANYAEMPDETAILS: 1002 0

Sortir

La valeur du curseur est de 0 dans l'ensemble de résultats renvoyé, ce qui signifie que tous les éléments ont été retournés par la première itération. Parce que le nombre d'éléments est petit, les hachages redis représentent ces éléments en utilisant un codage emballé à une seule allocation. Par conséquent, jusqu'à ce qu'une taille ou un nombre maximal d'éléments soit respecté, la commande renverra tous les éléments du hachage. Si l'argument du comte est spécifié, il sera ignoré dans ce cas. C'est ce qu'on appelle une itération complète car à la fin de la première itération, nous avons reçu les neuf éléments. Si nous avions des dizaines de paires de valeurs de champ, elles seraient représentées comme une table de hachage en mémoire. Donc, il faudrait plusieurs itérations pour retourner tous les éléments.

Cas d'utilisation 02: Obtenez le nombre de visiteurs pour les sites Web dont le domaine de niveau supérieur est «.com »

La commande HSCAN peut être utilisée pour filtrer les éléments retournés en fonction d'une correspondance de modèle. Un argument de correspondance doit être passé.

Supposons qu'une entreprise doit suivre le nombre de visiteurs pour ses sites Web. Nous pouvons créer un hachage abccompany: visiteurs et ajouter des éléments comme suit.

HMSET ABCCOMPANY: Visiteurs "www.abc.moi "200000" www.htrs.com "123000" www.kdkdk.com "560000" www.QPSPS.LK "120000" www.dioso.com "90000

Nous pouvons utiliser la commande hgetall pour vérifier à quoi ressemble le hachage.

HGETALL ABCCOMPANY: Visiteurs

Maintenant, l'entreprise a besoin d'itérer sur ce hachage et de récupérer le nombre de visiteurs pour les sites Web avec le ".com » domaine de niveau supérieur. Passons l'argument de match à la commande hscan comme suit.

HSCAN ABCCOMPANY: Visiteurs 0 Match *.com *

Cela devrait idéalement renvoyer trois membres sur cinq membres, comme indiqué dans ce qui suit.

Conclusion

En résumé, la commande HSCAN est habituée à parcourir une collection de paires de valeurs de champ de hachage. Cette commande est dérivée de la commande parent de scan mais avec un léger changement dans le premier argument à passer lorsque HSCAN prend la clé de hachage comme premier argument. Comme discuté dans les cas d'utilisation, la commande HSCAN peut être utilisée de différentes manières en spécifiant les arguments de correspondance et de comptage, où vous pouvez récupérer des éléments qui correspondent à un modèle spécifique et limitez le nombre d'éléments renvoyés par itération. Dans l'ensemble, la commande HSCAN peut être utile lors de la récupération des éléments d'une collection sans bloquer le serveur ou le client.