Introduction aux ensembles triés redis

Introduction aux ensembles triés redis
Les ensembles triés redis sont une version plus avancée des ensembles. Un ensemble trié hérite de toutes les propriétés de la structure de données de l'ensemble redis. De plus, ils maintiennent l'ordre des éléments conservés. Chaque membre d'un ensemble trié a une partition utilisée pour commander les éléments de set dans l'ordre croissant.

Les ensembles triés sont très rapides pour ajouter, mettre à jour et supprimer leurs membres. Il a une complexité temporelle logarithmique sur toutes ces opérations. Étant donné que les membres sont commandés, l'accès à l'élément central est également très efficace. Par conséquent, l'ensemble trié serait idéal pour mettre en œuvre des applications en temps réel telles que les classements de jeu en ligne, les files d'attente de priorité à faible latence et les index secondaires.

La commande zadd

Plusieurs commandes sont disponibles pour fonctionner sur des ensembles triés. Le Zadd La commande est utilisée pour ajouter un ou plusieurs membres avec des scores à un ensemble trié stocké à une clé donnée. La complexité du temps de cette commande est proportionnelle au logarithme du nombre d'éléments. Par conséquent, c'est beaucoup plus rapide que la plupart des autres commandes redis.

Chaque fois que nous ajoutons des membres utilisant la commande zadd, il y a des effets directs qui se déroulent dans l'ensemble trié.

Étant donné qu'un ensemble trié détient un ensemble unique de membres, il n'autorise pas d'ajouter des membres déjà spécifiés dans l'ensemble trié. Au lieu de cela, il mettra à jour le score de ce membre en particulier et placera cet élément au bon indice pour maintenir l'ordre correct.

Si la touche SET triée n'existe pas, alors la commande ZADD créera l'ensemble trié et ajoutera tous les membres spécifiés.

Si la clé existe mais n'est pas censée contenir une valeur de type de jeu triée, elle augmentera une erreur.

Syntaxe

Zadd [Nx | Xx] [gt | Lt] [ch] [incr] [Membre du score…]

Habituellement, la commande zadd renvoie le nombre de membres ajoutés à l'ensemble trié. Par conséquent, il ignore les mises à jour du score pour les membres déjà existants. Cette valeur de retour changera si le Ch L'option est spécifiée. Par conséquent, le nombre de tous les membres modifiés seront retournés par la commande zadd. Ce compte comprend la somme des membres nouvellement ajoutés et le score modifié.

Exemple 01 - classement de jeu en ligne

Supposons un scénario où nous devons gérer un classement des utilisateurs pour un jeu d'aventure en ligne joué par des milliers d'utilisateurs du monde entier. La nature du jeu est que chaque utilisateur gagne de l'or par réussite de chaque mission. L'ensemble Tri Redis serait la structure de données idéale que nous pouvons utiliser pour ce type d'application de faible latence en temps réel.

Nous créerons un ensemble trié identifié par la clé jeu de jeu. En outre, plusieurs joueurs seront ajoutés en tant que membres triés avec différents scores. Le montant en or gagné de chaque utilisateur sera mappé comme le score de réglage trié.

Ajout de plusieurs membres avec ZADD

ZADD GameLeaderboard 2300 Gamer: 1 1400 Gamer: 2 800 Gamer: 3 3500 Gamer: 4 4000 Gamer: 5

Sortir:

Comme prévu, la valeur de retour est 5. C'est le nombre de membres ajoutés à l'ensemble trié stocké à Key jeu de jeu.

Vérifions si l'ensemble trié contient tous les membres d'une manière ordonnée. Nous pouvons utiliser la commande ZRange pour interroger tous les membres avec leurs scores comme indiqué dans ce qui suit:

Zrange GameLeader Board 0 10 Withcores

Comme mentionné, le jeu de jeu Trised Set stocke ses membres dans l'ordre croissant en fonction de leurs scores.

Ajouter un nouveau membre avec le même score que le membre existant

Essayons d'ajouter un autre utilisateur Gamer: 6 avec la quantité d'or de 3500. Les ensembles triés redis permettent à l'insertion des membres avec la même valeur de score. Par conséquent, cette opération doit ajouter avec succès le Gamer: 6.

Zadd GameLeaderboard 3500 Gamer: 6

Sortir:

Comme prévu, la valeur de retour est 1 qui vérifie que le membre a été ajouté avec succès.

Inspectons les membres de l'ensemble triés à nouveau de la commande ZRange.

Le membre Gamer: 6 a été inséré juste après le Gamer: 4. Les ensembles triés redis utilisent l'ordre lexicographique si les valeurs de score sont les mêmes pour les membres spécifiés. Il compare les chaînes des membres comme un tableau d'octets et les ordonne en conséquence.

Utilisation des options NX et XX avec ZADD

Supposons que nous n'avons besoin de mettre à jour le score d'un membre existant et de ne pas ajouter de nouveaux membres à l'ensemble trié jeu de jeu. Le Xx L'option est utilisée pour y parvenir.

Zadd GameLeader Board xx 3500 Gamer: 7 3000 Gamer: 5

Comme prévu, la valeur de retour est 0, ce qui signifie qu'aucun nouveau membre n'a été ajouté. Nous inspecterons à nouveau l'ensemble trié.

Le Gamer: 7 Le membre n'a pas été ajouté à l'ensemble trié mais le Gamer: 5 Le score du membre a été modifié et il est placé en conséquence.

Le Nx L'option fait exactement l'opposé du Xx.

Zadd GameLeaderboard NX 5500 Gamer: 7 4000 Gamer: 5

Inspectons à nouveau l'ensemble trié.

Comme indiqué ci-dessus, le nouveau membre Gamer: 7 a été ajouté avec succès. Le Gamer: 5 La valeur du score n'a pas été modifiée.

Utilisation des options LT et GT avec ZADD

Les options LT et GT sont très utiles lorsque vous devez mettre à jour les valeurs de score conditionnellement. L'un de ces deux drapeaux n'empêchera pas d'ajouter de nouveaux éléments à l'ensemble trié.

Chaque fois que vous spécifiez l'option LT avec la commande ZADD, elle modifiera la valeur du score si et seulement si le nouveau score est inférieur au score actuel de cet élément. L'option GT ne modifiera le score que si le nouveau score est supérieur au score actuel.

Zadd Gameleaderboard LT 2100 Gamer: 1 1500 Gamer: 2

Inspectons le jeu de jeu ensemble trié.

Comme vous pouvez le voir, le Gamer: 1 Le score précédent du membre était de 2300. Par conséquent, le score a été modifié avec cette opération et elle a été changée à 2100. Le Gamer: 2-Le score des membres n'est pas modifié car son score précédent était inférieur au nouveau score.

L'option CH

Habituellement, la commande ZADD renvoie le nombre de membres ajoutés. Avec l'option CH, il renverra la somme des membres nouvellement ajoutés et des membres existants dont les scores sont modifiés.

Zadd GameLeader CH 2100 Gamer: 8 1500 Gamer: 2 3550 Gamer: 4

Lors de l'exécution de la commande ci-dessus, le Gamer: 8 Le membre doit être ajouté. Le Gamer: 2 et Gamer: 4 Les valeurs du score des membres doivent être modifiées. Par conséquent, la somme des membres nouvellement ajoutés et modifiés est 3.

Usage de OPTION DE L'INCHAGE DANS ZADD

Le Augmenter L'option incrémentera le score d'un membre par le numéro d'incrément spécifié. La commande zadd se comporte exactement comme Zincrby.

Incrémentons le Gamer: 7 Le score du membre par 100 autres comme indiqué dans ce qui suit

ZADD GameLeaderboard Incr 100 Gamer: 7

Comme prévu, la valeur du score précédent a été augmentée de 100. Le nouveau score est retourné comme 5600.

Conclusion

Redis Tri Set est une structure de données plus avancée qui hérite de toutes les propriétés des ensembles ordinaires. Les ensembles triés sont beaucoup plus rapides que la plupart des commandes redis. Par conséquent, les ensembles triés sont largement utilisés dans les applications de faible latence en temps réel. La commande ZADD est utilisée pour créer un ensemble trié sur une clé spécifiée avec plusieurs membres. Les membres sont commandés en fonction de leurs valeurs de score. Chaque fois que les valeurs de score sont les mêmes pour plusieurs membres, la commande sera effectuée en utilisant l'ordre lexicographique.