Redis zinterstore

Redis zinterstore

Définir l'intersection

Un ensemble est une collection d'éléments tels que des chiffres, des lettres ou des objets du monde réel. Chacun de ces membres est distinct ou unique pour un ensemble donné. Ils seuls ne peuvent pas faire beaucoup de choses. Par conséquent, il existe des exigences pour établir les relations entre deux ou plusieurs ensembles pour générer des informations significatives. Comme nous le savons tous, les nombres ont des opérations fondamentales telles que l'addition, la soustraction, la multiplication et la division. De la même manière, les ensembles sont livrés avec quatre opérations principales: l'union, l'intersection, la différence et le complément.

Dans ce guide, nous nous concentrerons sur la commande redis qui fonctionne sur les ensembles triés pour calculer l'intersection de deux ou plusieurs d'entre eux. Par conséquent, cette section explique l'opération d'intersection définie. Comme son nom l'indique, l'opération d'intersection définie calcule l'ensemble des éléments communs appartenant à une liste donnée d'ensembles.

Le diagramme de Venn donné est une représentation de deux ensembles avec une intersection. Il y a trois membres qui visitent les deux sites A et B. Si nous prenons les visiteurs des sites A et B sous le nom de Set A et Set B, les trois membres mentionnés sont appelés l'intersection définie de l'ensemble A et Set B.

Redis prend en charge la structure de données définie triée hors de la boîte avec des opérations à usage général à ajouter, supprimer et interroger les éléments. De plus, Redis prend en charge des opérations plus avancées sur des ensembles triés comme les intersections des sets. La section suivante décrit la commande zinterStore qui aide à calculer l'intersection définie dans redis:

Commande redis zinterstore

La commande zinterStore fonctionne sur deux ensembles triés ou plus pour calculer l'intersection de ceux. Cette commande crée un nouvel ensemble trié à partir de l'intersection des ensembles spécifiés.

Étant donné que les éléments d'ensemble triés redis sont associés aux valeurs de score, chacun de ces scores est additionné par élément commun et stocké dans l'ensemble de destination comme indiqué dans l'illustration suivante:

Syntaxe:

Ce qui suit est la syntaxe de base de la commande zinterStore:

ZinterStore Destination_set numéro_of_sets set_key [set_key…] [poids poids [poids…]] [somme agrégée | Min | Max]

destination_set: La clé de l'ensemble trié qui contient l'intersection des ensembles triés spécifiés.

numéro_of_sets: Le nombre d'ensembles triés par lesquels l'intersection set est calculée.

set_key: L'identifiant clé ou unique de l'ensemble trié.

Poids: Le facteur de multiplication pour le score de chaque élément dans les ensembles de source.

AGRÉGAT: Cette option spécifie un moyen d'agréger les scores résultants par élément à l'intersection.

Par défaut, il prend la somme des scores par élément parmi les ensembles de source donnés. Il est possible de spécifier les scores minimum ou maximum par élément à travers les ensembles de source à laquelle il appartient.

Les poids et les arguments agrégés sont facultatifs à la commande zinterStore.

La commande zinterStore renvoie une valeur entière qui est le nombre de membres dans l'ensemble trié de destination à Destination_set.

Cas d'utilisation - Inspectez les visiteurs communs sur plusieurs sites Web avec leur nombre de visiteurs

Supposons un scénario où nous avons obtenu deux sites Web A et B. Pour obtenir une image globale des visiteurs du site, nous devons interroger les utilisateurs qui visitent les sites A et B. En outre, nous avons besoin de compter le nombre de visites par chaque membre.

Créons deux ensembles, SETA et SETB, comme indiqué dans les éléments suivants:

Zadd Seta 600 "John" 150 "Mary" 300 "Nick"
Zadd Setb 300 "Mary" 100 "Nick" 760 "Doe"

Nous pouvons utiliser la commande ZINTERSCORE pour découvrir l'intersection du SETA et SETB. Idéalement, «Mary» et «Nick» devraient être l'intersection des deux ensembles précédents:

ZinterStore Commonsitevisiteurs 2 Seta Setb

Dans cet exemple, nous avons utilisé le Commonsite Visiteurs Comme la clé de l'ensemble trié de destination. Il est obligatoire de spécifier le nombre d'ensembles que nous utilisons pour calculer l'intersection. Dans ce cas, c'est 2.

La valeur renvoyée est 2, ce qui signifie que les deux membres doivent être stockés dans l'ensemble trié de destination. Inspectons l'ensemble trié résultant Commonsite Visiteurs Utilisation de la commande ZRangeBysCore:

Comme prévu, les membres «Nick» et «Mary» sont dans l'ensemble trié résultant avec les valeurs de score résumées. Dans cet exemple, le membre «Nick» a respectivement 300 et 100 scores en SETA et SETB. Par conséquent, l'intersection de ces deux ensembles a résumé les valeurs de score pertinentes pour «Nick». La même chose s'est produite avec le membre «Mary».

Utilisons les facteurs de multiplication 2 et 3 pour SETA et SETB, respectivement:

ZinterStore Commonsitevisiteurs 2 SETA SETB Poids 2 3

Le score de «Nick» est calculé en multipliant les 300 et 100 par 2 et 3, respectivement et en additionnant les résultats. Par conséquent, le score final devrait être de 900. La même procédure est également suivie de la commande zinterStore pour l'autre membre.

Par défaut, les scores sont agrégés en les additionnant, mais les autres options sont également disponibles. Nous pouvons utiliser les arguments MIN et MAX qui maintient le score minimum ou maximum par membre dans l'ensemble trié résultant.

ZinterStore CommonsiteVisitors 2 Seta Setb Aggregate max

Comme prévu, la valeur de score maximale pour les deux membres est de 300 et elle est maintenue dans l'ensemble trié à destination.

Conclusion

En résumé, la commande zinterStore est utilisée pour calculer l'intersection pour les ensembles triés multiples fournis. Il est capable d'extraire l'intersection et de le stocker dans un nouvel ensemble trié. Comme mentionné précédemment, les scores par membre entre les ensembles de source sont additionnés par défaut. Les arguments minimum et maximum peuvent être transmis à la commande où les scores sont agrégés par le score minimum ou maximum dans les ensembles source. Dans le même temps, il est possible de spécifier un facteur de multiplication pour les scores de chaque élément de l'ensemble d'intersection. Dans l'ensemble, la commande zinterStore est fiable et fructueuse dans le calcul des intersections définies.