Redis zRangebyscore

Redis zRangebyscore

Interroger des éléments de réglage triés redis

Les ensembles triés redis sont très différents des ensembles normaux. Même si les deux types de sets stockent les membres uniques à l'intérieur, les ensembles triés mettent les éléments de manière ordonnée. Les principales propriétés de l'ensemble trié Redis sont:

  • Chaque élément attribué à un index unique (Rand) à partir de 0
  • Indice basé sur les commandes de score pour chaque élément
  • Indice basé sur l'ordre lexicographique pour chaque élément

Par conséquent, les membres de l'ensemble Tri de Redis peuvent être récupérés en fonction de plusieurs mesures telles que Score, Rank (Index) et Lexicographical. ZrangeByscore et Zrange sont les deux principales commandes de définition triée Redis qui peuvent être utilisées pour itérer sur les membres en fonction des mesures précédemment déclarées. Dans ce guide, nous nous concentrerons sur la commande ZRangeBysCore qui est utilisée pour interroger les membres par une gamme de valeurs de score.

La commande zRangeBysCore

Étant donné que la commande ZRangeByscore a une complexité temporelle logarithmique, il est très rapide pour récupérer les éléments de jeu triés. De plus, les options de commande comme Limit réduisent le temps de récupération d'un montant considérable. Par conséquent, la commande ZRangeByscore est sûre à utiliser dans les applications en temps réel à faible latence comme les classements en ligne, les files d'attente prioritaires et l'indexation secondaire en général.

Syntaxe:

ZRangeBysCore trid_set_key minimum_score maximum_score [withscores] [limite de décalage de décalage]

trié_set_key: C'est l'identifiant unique où l'ensemble trié est stocké.

minimum_score: La valeur du score de limite inférieur de la plage spécifiée.

maximum_score: La valeur de score de limite supérieure de la plage spécifiée.

Avec des sols: Cet argument facultatif renvoie le score de chaque élément.

LIMITE: Cet argument facultatif peut être utilisé pour limiter le nombre d'éléments de retour à partir d'une position spécifiée de l'ensemble trié.

La commande zRangeBysCore renvoie les membres de jeu triés entre les minimum_score et maximum_score scores. Ces membres sont retournés dans l'ordre croissant en fonction des valeurs de score. Si les multiples membres ont les mêmes scores, la commande suit l'ordre lexicographique.

Exemple: classement de jeu en ligne basé sur l'expérience des joueurs

Supposons que ce soit un jeu en ligne où chaque joueur peut acquérir des points d'expérience lorsqu'il termine les missions, découvrir des quêtes et vaincre les ennemis. Étant donné que les ensembles triés redis sont réactifs et les structures de données en mémoire où les membres sont commandés en fonction d'un score, ils peuvent être utilisés pour stocker les détails du joueur. À son tour, les informations peuvent être retournées avec une faible latence.

Comme indiqué dans l'illustration précédente, les informations du joueur peuvent être ajoutées à un ensemble trié Redis et peuvent manipuler plus tard en cas de besoin.

Ajoutons les quatre joueurs montrés dans l'illustration précédente. Nous utiliserons la commande zadd pour créer et ajouter les détails du joueur à l'ensemble trié "classement: xp".

ZADD CADEFBORD: XP 1500 Player: 01
ZADD CADEFBORD: XP 2500 Player: 02
ZADD CADEFBORD: XP 1000 Player: 03
ZADD CADEFBORD: XP 3500 Player: 04

Interrogez tous les joueurs du classement du jeu

Nous pouvons utiliser la commande ZRangeBysCore pour récupérer tous les joueurs du classement du jeu, comme indiqué dans ce qui suit. Les valeurs de score minimum et maximale sont spécifiées en 1000 et 3500. Nous pouvons utiliser le -infirme et +infirme Valeurs si nous ne sommes pas sûrs des valeurs de score les plus bas et les plus élevées:

ZRANGEBYSCORE CADEFBORD: XP 1000 3500
OU
ZRANGEBYSCORE CADEFBORD: XP -Inf + Inf

Tous les membres sont retournés comme dans la sortie suivante:

La sortie est triée dans l'ordre croissant par des valeurs de score.

Exclure les valeurs minimum_score ou maximum_score

Dans l'exemple précédent, les valeurs de score MIN et MAX incluent la plage. Nous pouvons exclure les valeurs de score MIN et MAX de la plage en préfixant le score avec le «(» (»comme indiqué dans ce qui suit:

ZRANGEBYSCORE CARBORD: XP (1000 (3500

Comme le montre la sortie suivante, la sortie exclut les membres dont les scores sont de 1000 et 3500.

Affichez les valeurs du membre et scorez ensemble

Nous pouvons utiliser l'argument en option WithScores avec la commande ZRangeBysCore pour afficher les valeurs de score par membre.

ZRANGEBYSCORE CADEFBORD: XP -Inf + Inf WithScores

Sortir:

Limiter le nombre de membres retournés

Dans certains scénarios, nous devons limiter le nombre de membres retournés par appel. Disons que nous devons obtenir les 2 meilleurs membres dont les valeurs d'expérience (score) sont les plus basses. Nous pouvons utiliser l'argument limite avec le nombre de 2 et le décalage de 0. Le décalage est le rang par membre.

ZRANGEBYSCORE CADEFBORD: XP -Inf + Inf Limit 0 2

Cela renvoie les 2 meilleurs membres dont les scores sont les plus bas.

Vous pouvez également utiliser l'argument limite avec l'argument WithScore.

Commande Zrange au lieu de Zrangbyscore

Avec le redis 6.2.0 version, la commande zRangeByscore est obsolète. Par conséquent, nous pouvons utiliser la commande ZRange qui se comporte de la même manière que la commande ZragneBysCore lorsqu'elle est utilisée avec l'argument facultatif Byscore.

Conclusion

En résumé, la commande ZRangeBysCore est utilisée pour interroger les membres entre les valeurs de score minimum et maximum spécifiées d'un ensemble trié Redis stocké à une clé donnée. Comme indiqué, cette commande a une complexité temporelle logarithmique qui peut être utilisée pour parcourir un ensemble de membres à faible latence. Il prend également en charge quelques arguments facultatifs, limite et withscore, qui limitent le nombre de membres renvoyés et affiche les deux paires de valeurs de score membre.