Redis zset

Redis zset

«Voulez-vous implémenter un classement en temps réel pour votre prochain jeu en ligne avec Redis? Redis fournit une solution prête à l'emploi pour cela avec Zsets, qui est un nom court pour les ensembles triés redis et est un outil que chaque utilisateur de Redis doit être familier avec.

Redis Zset est une collection ordonnée de membres uniques où chaque membre est associé à une valeur de score. Pour souligner, les zsets sont commandés par leur valeur de score par défaut, ce qui les rend très différents du type de jeu régulier. De plus, plus d'un membre peut détenir la même valeur de score, et les membres seront commandés en lexicographiquement dans ce cas. Les zsets redis sont un meilleur choix pour les files d'attente prioritaires, l'indexation secondaire, les classements à faible latence et les limiteurs de taux. Parce que les zsets offrent des demandes en temps réel telles que la réactivité et l'accès en mémoire avec une faible latence.

De plus, chaque membre se voit attribuer une valeur de rang basée sur sa position dans le Zset qui ressemble plus à un index basé sur un 0 dans un tableau Java."

Un rapide coup d'œil aux commandes de base zset

Plusieurs commandes de base sont disponibles pour ajouter, récupérer et supprimer les membres d'un zset (ensemble trié) stocké à une touche Zset donnée. Jetons un coup d'œil à trois commandes principales: Zadd, Zrange, Zrank et Zrem.

Un temps réel Pokemon L'exemple de classement de jeu sera démontré ici.

Commande zadd

Lors de l'enregistrement de l'utilisateur, nous devons ajouter chaque utilisateur à notre Zset nommé Pokémon: classement. Ainsi, la commande zadd est le candidat idéal à utiliser comme suit. Supposons que nous avons initialement enregistré cinq joueurs. Ainsi, les scores seront affectés à 0.

Zadd Pokemon: Cabilations 0 John

La valeur de retour est 1, ce qui signifie qu'un membre a été ajouté au Zset stocké chez Key Pokemon: Leader. Si le membre est déjà disponible dans le zset donné, seule la valeur de score sera mise à jour.

Nous sommes tous bons pour continuer. Alors, allons-y et ajoutons les quatre joueurs restants au Zset: Pokemon: Leader.

Zadd Pokemon: Cabilations 0 Anna
Zadd Pokemon: Cabilations 0 Zakariah
Zadd Pokemon: classement 0 bob
Zadd Pokémon: Cabilations 0 Mary

Commande ZRange

Les cinq membres ont été ajoutés avec succès. Ensuite, nous devons examiner ou interroger les membres ajoutés en utilisant la commande ZRange. La commande ZRange permet de récupérer des membres qui sont triés dans une plage donnée. Une plage peut être spécifiée par des valeurs de rang, de score ou de lexicographie.

Interrogeons tous les membres en spécifiant la plage par valeurs de rang.

Zrange Pokémon: classement 0 -1

Comme prévu, les cinq membres ont été retournés et ordonnés lexicographiquement parce que les valeurs de score sont les mêmes pour tous les membres à ce stade. De plus, 0 est l'indice de départ / rang de la plage, et -1 indique l'indice supérieur du zset donné.

La commande ZRange propose une large gamme d'arguments facultatifs, et nous utiliserons l'argument WithScore avec la commande ci-dessus pour afficher les scores associés pour chaque membre.

Zrange Pokémon: classement 0 -1 avec des scores

Commande zincrby

Supposons que les joueurs jouent au jeu depuis quelques heures et que les scores sont passés de 0. Redis Zsets fournit la commande Zincrby pour incrémenter les scores de chaque membre comme suit.

Zincrby Pokemon: classement 100 bob

Cela devrait augmenter la valeur du bob membre de 0 à 100. Appelons également la même commande pour incrémenter les scores d'autres joueurs.

Zincrby Pokemon: LEADBODF 200 Anna
Zincrby Pokémon: classement 76 Zakariah
Zincrby Pokemon: LEADBODF 450 Mary
Zincrby Pokemon: classement 167 John

Selon les valeurs de retour, les scores auraient dû être mis à jour correctement. Utilisons la commande ZRange une fois pour récupérer à nouveau les membres avec leurs scores.

Bravo! Les scores des joueurs ont été correctement mis à jour. De plus, les membres sont ordonnés par leurs scores dans l'ordre croissant qui est une caractéristique cool de Redis Zsets.

Commande zrevrank

Il est indispensable d'afficher le rang de chaque joueur dans un classement. Ainsi, la commande zrevrank est utilisée pour montrer le rang de membres où l'élément associé au score le plus élevé sera le 0ème rang, et le prochain sera le 1er rang, et ainsi de suite.

Depuis le membre Marie a le score le plus élevé, cet élément doit être classé comme le premier membre avec le 0ème rang. Utilisons la commande zrevrank comme suit.

Zrevrank Pokémon: Leader Mary

Comme prévu, le rang est de 0, ce qui signifie le meilleur joueur du classement du jeu.

Utilisons la commande zrevrank avec l'élément zakariah comme suit. Idéalement, il devrait être le dernier rang car ce membre a la valeur de score la plus basse.

Commande zrem

Chaque fois que nous devons supprimer un élément ou plusieurs éléments d'un ZSET, la commande zrem est utile. Retirer Zakariah du classement en raison de son faible score.

Zrem Pokemon: Leader Zakariah

Il a été correctement supprimé du zset.

Plus important encore, les commandes ZSET ont une complexité temporelle O (log (n)), où n est le nombre d'éléments dans l'ensemble trié, qui est considérablement plus rapide. Dans le même temps, la commande ZRange doit être utilisée avec soin car elle a o (log (n) + l), où l est le nombre de résultats renvoyés par la commande. Donc, cela peut entraîner des problèmes de performances lorsque vous travaillez avec des ensembles de données plus importants.

Conclusion

En résumé, Redis Zset est un nom court pour un type de données de jeu trié qui peut contenir des membres uniques commandés par leurs valeurs de score. Comme discuté, les membres ZSET sont des chaînes non répétées et les valeurs de score peuvent être répétées. Lorsque plusieurs membres sont affectés avec la même valeur de score, ces membres seront commandés en lexicographiquement. Les zsets sont un excellent choix pour les classements en temps réel, l'indexation secondaire et les files d'attente prioritaires avec une réactivité plus élevée et une faible latence dans l'accès à la mémoire. Pour conclure, plusieurs commandes sont disponibles pour ajouter, supprimer et interroger les membres d'un redis zset donné avec facilité.