Redis zdiff

Redis zdiff

Introduction à la différence de définition

La différence définie est l'une des opérations définies fondamentales qui ont toujours figuré sur la liste avec le Set Operations Union et Intersection. De plus, la différence entre deux ensembles donnés produit un autre ensemble. Considérez les deux ensembles A et B dans l'illustration suivante:

A = "Jack", "Daniel", "Mary"
B = "Daniel", "Nick", "Mary", "Ricky"

La différence définie A-B peut être écrite comme suit:

A-b = "Jack", "Daniel", "Mary" - "Daniel", "Nick", "Mary", "Ricky"

Étant donné que les articles «Daniel» et «Mary» sont présents dans les deux ensembles, ceux-ci sont ignorés lorsqu'ils prennent la différence de set A-B. Par conséquent, la différence définie A-B est la suivante:

A-b = "jack"

Il n'a pas besoin d'être que A-B et B-A sont les mêmes. Considérons la différence définie B-A:

B = "Daniel", "Nick", "Mary", "Ricky"
A = "Jack", "Daniel", "Mary"

B-a = "Daniel", "Pseudo", "Marie", "Ricky" - "Jack", "Daniel", "Mary"

B-a = "Nick", "Ricky"

La différence définie peut être visualisée à l'aide d'un diagramme de Venn de manière plus simple comme suit:

La commande zdiff

Les ensembles triés Redis prennent en charge les opérations définies telles que Set Union, Intersection et Différence. Dans ce guide, nous nous concentrerons sur la commande zDiff qui est utilisée pour produire la différence de jeu triée. La commande zDiff renvoie un autre réglé trié des ensembles triés fournis.

Syntaxe:

La commande zDiff a une syntaxe simple où il est obligatoire de spécifier le nombre de clés comme premier argument comme indiqué dans les éléments suivants:

ZDiff Number_Of_Keys Key [Key…] [WithScores]


Number_of_keys: Le nombre des clés des ensembles triés spécifiés.

clé: Une clé de l'ensemble trié spécifié.

WithScore: c'est un paramètre optionnel. Lorsque cet argument est spécifié, les scores des éléments de jeu retournés sont affichés.

Cette commande renvoie un ensemble trié qui est la différence entre les ensembles triés fournis. Les scores d'élément sont affichés si le Avec des sols L'argument est passé.

Cas d'utilisation 1: Trouvez des utilisateurs végétaliens

Supposons qu'un restaurant maintient deux listes où l'une répertorie les personnes qui commandent des légumes et l'autre enregistre les personnes qui commandent de la viande. Maintenant, ils veulent identifier les végétaliens et envoyer un repas végétarien le jour de leur anniversaire. La structure de données de l'ensemble Tri Redis peut être utilisée dans ce scénario.

Tout d'abord, nous créons un ensemble pour stocker les personnes qui ont commandé des repas de légumes.

Zadd Vegiconsumers 10 Jack
Zadd Vegiconsumers 5 Mary
Zadd Vegiconsumers 13 Ricky


La valeur du score est utilisée comme nombre moyen de repas commandés par mois. Ensuite, nous créons un autre ensemble trié appelé pantalons de viande.

Zadd Meatconsumers 22 Henrick
Zadd Meatconsumers 12 Mary
Zadd Meatconsumers 5 Ricky


Inspectons les membres des deux ensembles triés en utilisant la commande ZRange.

Zrange Vegiconsumers 0 5
Zrange Meatconsumers 0 5


Sortir:


Comme prévu, les deux ensembles sont peuplés avec les membres spécifiés précédemment. Étant donné que l'équipe de gestion du restaurant doit interroger les végétaliens, nous devons peupler la différence entre les ensembles entre végétons et pantalons de viande. La commande suivante remplit un ensemble trié qui se compose d'utilisateurs qui n'ont commandé que les repas de légumes.

Zdiff 2 Vegiconsumers MetConsumers


Puisque nous prenons la différence entre deux ensembles, le premier argument est défini sur 2. Ensuite, nous spécifions les clés des deux ensembles.

Nous pouvons modifier la commande précédente pour afficher la valeur de score du membre retourné.

Zdiff 2 Vegiconsumers MetConsumers With Scores


Sortir:


Comme prévu, la différence définie entre le végétons et pantalons de viande produit un ensemble trié avec un membre comme indiqué dans ce qui suit:

Vegiconsumers = Mary, Jack, Ricky

viandeconsumers = Ricky, Mary, Henrick

Vegiconsumers - MeatConsumers = Mary, Jack, Ricky - Ricky, Mary, Henrick = Jack

Par conséquent, le seul client végétalien est «Jack».

Cas d'utilisation 2: Trouvez des utilisateurs qui ne sont pas végétaux

De même, la gestion du restaurant peut interroger les clients non végétaliens. Dans ce cas, la différence définie devrait être la suivante:

viande - Vegiconsumers

Utilisons la commande zdiff avec une légère modification cette fois.

ZDiff 2 MeatConsumers Vegiconsumers With Scores


Sortir:


Comme prévu, le membre «Henry» est le seul client à avoir commandé des repas avec de la viande sans commander de repas de légumes.

Conclusion

En bref, Redis soutient les opérations de théorie des ensembles fondamentaux tels que Set Union, Intersection et la différence sur le type de données de jeu trié. La commande ZDiff est utilisée pour produire la différence entre deux ensembles donnés. Comme mentionné, cette commande renvoie un autre ensemble trié qui se compose des membres qui n'appartiennent qu'au premier ensemble trié spécifié. Comme indiqué dans les cas d'utilisation précédents, il est obligatoire de spécifier le nombre de clés comme premier argument de cette commande. Dans l'ensemble, la commande ZDIFF a presque une complexité temporelle logarithmique qui peut être utilisée efficacement dans les applications de faible latence.