Redis zrevrange

Redis zrevrange
«La structure de données SET triée est un type de données spécial introduit par Redis où les éléments stockés sont commandés par ordre croissant. Les membres stockés à l'intérieur d'un ensemble trié ressemblent plus à des paires de valeurs de champ d'un hachage redis. Chaque membre est associé à un score et un rang où la requête peut être effectuée par les deux propriétés. Le classement ou l'indice est attribué à chaque membre à partir de zéro; L'élément suivant est un, et ainsi de suite. De plus, l'index peut être une valeur négative. Le rang -1 indique le dernier membre de l'ensemble trié. L'élément à côté du dernier élément est indiqué par l'indice -2 et ainsi de suite.

Les commandes ZrevRange et Zrange sont capables de récupérer les membres entre une gamme spécifiée d'index d'un ensemble trié stocké à une clé donnée. Ces commandes acceptent à la fois les valeurs d'index positives et négatives lors de l'interrogation aux membres d'une plage donnée. Dans ce guide, nous nous concentrerons sur la commande ZrevRange et son utilisation pratique."

Commande redis zrevrange

La commande ZrevRange est utilisée pour interroger les membres entre les valeurs d'index minimum et maximum spécifiées d'un ensemble trié stocké à une clé donnée. Les membres sont retournés par ordre décroissant en fonction de leur valeur de score. Chaque fois que les multiples membres ont le même score, les éléments seront ordonnés lexicographiquement.

Syntaxe

Zrevrange trid_set_key start_index end_index [withscores]

trimed_set_key: Il s'agit de l'ID unique qui identifie l'ensemble trié dans le magasin de données Redis

start_index: L'indice de départ de la plage spécifiée

end_index: L'indice de fin de la plage spécifiée

[Withscores]: Il s'agit d'un argument facultatif lorsque des membres spécifiés seront retournés avec leurs scores.

La commande renvoie un tableau de membres stockés entre la plage d'index spécifiée. Si la Avec des sols L'argument a été spécifié, les scores seront inclus dans la sortie.

Exemple: Renvoyez les joueurs qui ont terminé le plus de niveaux dans un jeu en ligne

Supposons un jeu communautaire en ligne où chaque joueur est classé en fonction du nombre de niveaux terminés. À la fin de chaque semaine, les trois meilleurs joueurs obtiennent des cadeaux bonus. Par conséquent, nous devons interroger les 3 meilleurs joueurs qui ont terminé le plus de niveaux dans le jeu. Nous pouvons attribuer le nombre de niveaux terminés comme le score d'un membre stocké dans un ensemble trié Redis.

Tout d'abord, nous ajouterons quelques joueurs à un ensemble trié appelé Jeu de jeu.

Zadd GameLeaderboard 4 Player: 1
Zadd GameLeaderboard 2 Player: 3
Zadd GameLeaderboard 5 Player: 2
ZADD GameLeaderboard 1 Player: 4
Zadd GameLeaderboard 10 Player: 5

Dans l'exemple ci-dessus, Joueur: 1 a terminé 4 niveaux, Joueur: 5 a terminé 10 niveaux, et ainsi de suite. Les informations ci-dessus concernant un joueur ont été mappées à un ensemble trié, comme indiqué dans ce qui suit.

Utilisons la commande ZRevRange pour interroger tous les membres dont le nombre de niveaux terminés est plus élevé et va en haut de la liste.

ZrevRange GameLeader 0 4

Comme dans l'illustration ci-dessus, les index de jeu triés se propagent de 0 à 4. Par conséquent, nous avons spécifié les index de début et de fin comme 0 et 4, respectivement, qui devraient idéalement renvoyer tous les membres appartenant à l'ensemble trié identifié par la clé GameLeaderboard AS Vous pouvez voir, il a commandé aux membres d'une manière que la plupart des joueurs ont le plus grand nombre de niveaux terminés dans le jeu.

Interroger les membres avec leurs scores
La commande ZRange peut être utilisée avec l'argument facultatif WithScores pour afficher les valeurs de score de chaque joueur dans l'exemple ci-dessus.

ZrevRange GameLeader 0 4 With Scores

Sortir

Les membres de requête à partir de la fin de l'ensemble trié
Dans tous les exemples ci-dessus, nous avons utilisé l'indice basé sur 0 qui compte à partir du début de l'ensemble trié. Nous pouvons spécifier la plage d'index à partir de la fin de l'ensemble trié également. Disons que nous devons interroger les joueurs dont les scores sont les plus bas en utilisant la commande ZrevRange.

ZrevRange GameLeader -board -3 -1 withscores

Dans ce cas, l'indice final a été spécifié comme -1, ce qui signifie le dernier élément. L'indice de démarrage est -3. Par conséquent, il interrogera les membres jusqu'au 3ème membre de la fin de l'ensemble trié. Ceci est très clair si vous utilisez la figure ci-dessus, qui montre comment les index peuvent être utilisés dans les deux sens.

La commande zRange au lieu de ZrevRange

La commande zrevrange a été dépréciée de la version 6 redis 6.2.0. Par conséquent, il est recommandé d'utiliser la commande ZRange avec l'argument Rev facultatif, qui se comporte de la même manière que la commande ZrevRange.

Conclusion

Pour résumer, la commande ZrevRange est utilisée pour interroger les membres entre un minimum et un maximum d'index spécifiés d'un ensemble trié Redis stocké à une clé donnée. Il récupère les membres stockés entre les valeurs d'index spécifiées dans l'ordre inverse. Outre l'ordre inversé des membres, cette commande se comporte similaire à la commande ZRange. Comme indiqué ci-dessus, il a une complexité temporelle logarithmique qui rend la commande assez rapide à utiliser dans les applications en temps réel efficacement. Par conséquent, la commande ZrevRange est idéale à utiliser chaque fois que vous avez besoin de récupérer des éléments dans l'ordre descendant à partir d'un ensemble trié.