Redis zrange

Redis zrange

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]
  • trié_set_key: La clé de l'ensemble trié.
  • commencer: La valeur de départ de la requête de plage. Cela peut être une score, un rang ou une valeur lexicographique.
  • fin: La valeur de clôture de la requête de plage. Cela peut être une score, un rang ou une valeur lexicographique.

Les arguments ci-dessus sont obligatoires pour cette commande, et certains arguments facultatifs peuvent être spécifiés comme suit.

  • Byscore: La plage (arguments de démarrage et fin) est spécifiée en fonction des scores.
  • Bylex: La plage est spécifiée en fonction des valeurs lexicographiques.
  • TOUR: Cet argument inversera l'ordre des membres retournés, où le 0ème indice maintiendra le membre avec le score le plus élevé.
  • LIMITE: Cet argument limitera le nombre de membres retournés d'un décalage donné.
  • Avec des sols: Par défaut, la commande ZRange ne renvoie que les membres dans un intervalle de plage donné. Lorsque cet argument est spécifié, la sortie contient également les valeurs de score associées à chaque membre.

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.