Les ensembles triés redis contiennent des membres uniques de type de chaîne non répétitifs de manière ordonnée. Par défaut, les membres de l'ensemble triés sont commandés par ordre croissant par leurs valeurs de score. De plus, les ensembles triés maintiennent un indice basé sur un zéro où les membres sont classés 0, 1,…, etc. Chaque fois que les scores sont similaires parmi deux membres ou plus, l'ordre sera effectué par ordre lexicographique. Étant donné que les éléments définis triés sont déjà commandés, les membres peuvent être interrogés par rang ou score de manière rapide. En outre, les ensembles triés redis sont construits sur une structure de données à double porteur de données qui permet d'ajouter, de lire, de supprimer et de mettre à jour les opérations exécutées dans la complexité temporelle O (log (n)).
Dans ce guide, nous nous concentrerons sur la commande ZRange, qui peut être utilisée pour interroger une gamme de membres par leurs scores, index ou lexicographiques.
La commande zRange
La commande ZRange est utilisée pour récupérer une gamme de membres d'un ensemble trié stocké à une clé donnée. Cette commande vous permet d'interroger une gamme d'éléments basés sur différentes propriétés telles que le rang, le score ou l'ordre lexicographique. Par défaut, la commande ZRange utilise une plage basée sur l'index. La syntaxe de base de la commande ZRange est la suivante.
Syntaxe:
ZRange trid_set_key start end [burscore | Bylex] [Rev] [Limit Offset Count] [WithScores]
Les arguments ci-dessus sont obligatoires pour cette commande, et certains arguments facultatifs peuvent être spécifiés comme suit.
Comme mentionné, la commande ZRange renvoie la liste des membres dans une plage donnée d'un ensemble trié stocké à une clé donnée. Si l'argument WithScore est spécifié, le score associé sera affiché. En commençant par redis version 6.2.0, le ZrevRange, ZRangeByscore, ZrevRangeByscore, ZRangeBylex, ZrevRangeBylex peuvent être remplacés par la commande ZRange.
Cas d'utilisation 01 - Récupération des 3 meilleurs utilisateurs avec les points d'expérience les plus bas sur un classement de jeu
Plage basée sur l'index
Supposons un jeu en ligne où chaque utilisateur est récompensé par des points d'expérience en fonction du nombre de missions terminées. La structure de données SET triée Redis est un candidat idéal pour conserver ces informations, comme indiqué dans ce qui suit.
Zadd OnlineGameusers 3000 "Jack"
zadd onlinegameusers 100 "Rihana"
Zadd OnlineGameusers 1250 "Niku"
Zadd OnlineGameusers 800 "Abigirl"
Zadd OnlineGameusers 4500 "Dickson"
Comme vous pouvez le voir, les points d'expérience du jeu ont été stockés comme le score de chaque membre.
Inspectons l'ensemble trié nouvellement créé stocké sur des `` en ligne de jeu'urs ''. Étant donné que la requête de plage par défaut est basée sur des index, nous spécifierons les limites minimales et maximales à 0 et 5.
Zrange OnlineGameusers 0 5 Withscore
Comme prévu, les membres sont triés par des scores dans l'ordre croissant. Interrogeons les trois meilleurs utilisateurs avec les points d'expérience les plus bas. Étant donné que l'ensemble est trié par ordre croissant, il est rapide et trivial d'obtenir les trois meilleurs membres avec les points les plus bas comme suit.
Zrange OnlineGameusers 0 2 Withscore
Comme discuté précédemment, les ensembles triés ont des indices zéro. Par conséquent, les trois premiers éléments peuvent être spécifiés comme une plage d'index en commençant de 0 à 2. La sortie doit afficher les 3 premiers éléments avec les scores les plus bas comme suit.
Cas d'utilisation 02 - Récupération des utilisateurs avec plus de 3000 points d'expérience dans un classement de jeu
Dans ce scénario, nous devons interroger tous les utilisateurs qui ont plus de 1000 points d'expérience. Puisque nous parlons d'une plage basée sur les scores, utilisons l'argument facultatif Byscore pour spécifier la plage de valeurs de score.
Zrange OnlineGameusers (3000 + inf
Les limites de plage ont été spécifiées à l'aide de scores. Puisque nous avons besoin de dizaines de plus de 3000, le score de 3000 doit être exclu. La commande ZRange prend en charge l'exclusion des scores en la préfixant avec le caractère '('.
Comme prévu, nous n'avons qu'un seul membre dont le point d'expérience (score) dépasse 3000.
Cas d'utilisation 03: Obtenir les 3 meilleurs utilisateurs dont les points d'expérience les plus élevés
Par défaut, l'ensemble trié ordonne à ses éléments dans l'ordre croissant. Par conséquent, le membre avec le score le plus bas est positionné au 0ème indice. Pour obtenir les 3 meilleurs utilisateurs avec les scores les plus élevés, nous devons passer l'argument Rev à la commande ZRange comme suit. Il commandera l'ensemble trié dans l'ordre descendant et interrogera la plage d'index en commençant de 0 à 2.
Zrange OnlineGameusers 0 2 Withscore Rev
Cas d'utilisation 04 - Récupération des utilisateurs dont le nom commence par «L» ou la lettre suivante
La commande ZRange vous permet de récupérer une gamme de membres en fonction des valeurs lexicographiques si les scores sont similaires parmi les membres. Réinitialisons toutes les scores à 0 comme suit.
Zadd OnlineGameusers 0 "Jack"
zadd onlinegameusers 0 "Rihana"
Zadd OnlineGameusers 0 "Niku"
zadd onlinegameusers 0 "Abigirl"
zadd onlinegameusers 0 "Dickson"
Comme prévu, les points d'expérience (scores) ont été réinitialisés à 0 comme indiqué dans ce qui suit.
Utilisons l'argument Bylex pour récupérer les membres dont les noms commencent par la lettre «l» ou la lettre suivante.
Zrange OnlineGameusers [L + Bylex
Les limites de la plage ont été spécifiées à l'aide de valeurs de chaîne (lexicographie). La sortie doit être tous les membres dont les noms commencent par la lettre «l» ou la lettre suivante. Idéalement, «Niku», «Rihana» et «Dickson» devraient être la sortie. La lettre minuscule «D» vient après la majuscule «L» selon leurs valeurs ASCII.
Conclusion
En résumé, la commande ZRange est utilisée pour récupérer une gamme de membres stockés dans un ensemble trié stocké à une clé donnée. Comme mentionné, cette commande vous permet d'interroger une gamme d'éléments définis par leurs scores, rangs ou valeurs lexicographiques. De plus, la commande ZRange peut être utilisée avec l'argument Rev pour inverser l'ordre de tri. Dans l'ensemble, plusieurs capacités sont emballées dans cette commande, et elle est devenue un remplacement pour plusieurs commandes telles que ZRangebylex, ZrangeBysCore, etc.