Redis a trié le score et le rang
Les ensembles triés redis sont la variante commandée de la structure de données de jeu typique. Chaque élément de jeu trié est associé à deux propriétés spéciales: le rang et le score. La valeur du score est utilisée pour commander les éléments définis triés dans l'ordre croissant. De plus, les scores peuvent être répétés tandis que les membres doivent être uniques pour un ensemble donné. Étant donné que les éléments définis triés sont commandés, les opérations ADD, Update et Supprimer sont plus rapides. De plus, cette structure de données permet d'interroger les éléments dans une gamme par score ou une valeur de classement avec de grandes performances.
Comme le montre l'illustration précédente, la plupart des principales commandes qui fonctionnent sur des ensembles redis ont la complexité temporelle d'O (log (n)), ce qui est plus rapide.
La commande zCount
La commande zCount est utilisée pour interroger une gamme d'éléments définis entre les scores spécifiés. Les éléments retournés sont triés du score le plus bas au score le plus élevé. Chaque fois que les multiples éléments détiennent les mêmes scores, ceux-ci sont ordonnés par ordre lexicographique. Cette commande a également la complexité temporelle O (log (n)) car elle utilise la propriété de rang lors de l'interrogation d'une gamme d'éléments. Par conséquent, aucune relation linéaire au nombre d'éléments lors de la mesure du temps d'exécution.
Ce qui suit est la syntaxe de la commande zCount:
Syntaxe:
ZCount set_key minimum_score maximum_score
set_key: La clé de l'ensemble trié redis.
minimum_score: La valeur de score la plus basse de la plage spécifiée.
maximum_score: La valeur de score la plus élevée de la plage spécifiée.
Les extrémités Min et Max de la plage peuvent être spécifiées de différentes manières. Chaque fois que vous n'avez aucune idée des scores les plus bas et les plus élevés possibles dans l'ensemble trié, le -inf et + inf. Il récupère idéalement tous les éléments de l'ensemble trié.
De plus, les valeurs minimales et maximales spécifiées sont inclusives de la plage. Si vous voulez que l'une de ces valeurs soit exclusive, le «(» le caractère peut être utilisé comme dans le ZrangeBysCore commande.
Cette commande renvoie une valeur entière qui est le nombre d'éléments dans la plage spécifiée.
Cas d'utilisation - Comptez les joueurs avec un décompte d'or entre une plage donnée
La structure de données SET Tri de Redis est un candidat idéal pour stocker les données de classement. Supposons un scénario où un jeu en ligne offre une quantité d'or pour ses joueurs lorsque les missions sont terminées. En fonction de la quantité d'or de chaque joueur, un classement doit être mis en œuvre. Nous pouvons facilement utiliser les ensembles triés redis pour implémenter ce classement. Le montant de l'or peut être mappé comme le score de chaque membre.
Créons un ensemble trié Jeu de jeu et ajouter certains joueurs avec des quantités d'or comme indiqué dans ce qui suit. La commande zadd est utilisée pour créer et ajouter des joueurs à l'ensemble trié stocké à la clé GameLeaderboard:
ZADD GameLeaderboard 1000 "Jack" 450 "Rexy" 3000 "John" 1600 "Mary" 450 "Rakesh"
Utilisons la commande ZRangeBysCore pour vérifier si les membres sont ajoutés et triés correctement.
ZRangeBysCore GameLeaderboard -inf + Inf
Comme prévu, les membres sont stockés et triés par des scores. Étant donné que «Rexy» et «Rakesh» ont obtenu les mêmes scores, ils sont ordonnés lexicographiquement, «Rakesh» étant le meilleur membre de la liste retournée.
Comptons le nombre d'éléments dans l'ensemble trié à l'aide de la commande zCount:
ZCOUNT GameLeaderboard -inf + Inf
Depuis que nous avons obtenu cinq membres set, la valeur retournée est de 5 parce que la plage est de la -Infinity à + Infinity qui couvre l'ensemble.
Spécions une fourchette à partir de 1000 à 3000.
ZCOUNT GameLeader Board 1000 3000
Inspectons d'abord notre ensemble avec la commande ZRangeBysCore comme indiqué dans les éléments suivants:
ZRangeBysCore GameLeaderboard -inf + Inf Withscore
Il y a trois membres dans la fourchette de 1000 à 3000. Étant donné que les 1000 et 3000 sont inclusifs par défaut, la commande ZCount précédente doit retourner 3.
Utilisons le caractère «(» pour exclure les scores 1000 et 3000 avec le même exemple indiqué dans l'exemple précédent:
ZCOUNT GameLeaderboard (1000 (3000
Étant donné que les scores 1000 et 3000 sont exclus, le seul membre de gauche est «Mary» avec un score de 1600. Par conséquent, le décompte retourné est 1.
Chaque fois que vous avez besoin de compter les membres entre une gamme de scores, il est recommandé d'utiliser la commande ZCount qui est extrêmement plus rapide.
Conclusion
En résumé, la commande zCount est utilisée pour compter le nombre d'éléments dans une plage donnée de valeurs de score. Il a une complexité temporelle O (log (n)). Comme discuté, il peut être utilisé avec des valeurs minimales et maximales pour définir une gamme de scores comme dans la commande ZRangeByscore. Les valeurs min et max sont inclusives par défaut. Comme indiqué précédemment, le caractère «(» peut être utilisé pour exclure les valeurs de score. Dans l'ensemble, la commande ZCount est simple à utiliser et fonctionne avec de grandes performances.