Redis zcote

Redis zcote

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.