Maison > base de données > Redis > Comment utiliser Redis pour implémenter la fonction de classement

Comment utiliser Redis pour implémenter la fonction de classement

藏色散人
Libérer: 2020-08-13 11:45:24
avant
4620 Les gens l'ont consulté

La colonne suivante du Tutoriel Redis vous présentera comment utiliser Redis pour implémenter la fonction de classement. J'espère que cela sera utile aux amis dans le besoin !

Comment utiliser Redis pour implémenter la fonction de classement

La fonction de classement est une demande très courante. Utiliser les fonctionnalités de l'ensemble ordonné dans Redis pour implémenter les classements est un choix bon et rapide.

Les classements généraux sont efficaces, comme la « Liste des points utilisateur ». S'il n'y a pas d'efficacité et que le classement est toujours basé sur le classement général, il peut toujours y avoir quelques anciens utilisateurs en tête de liste. Pour les nouveaux utilisateurs, c'est vraiment frustrant.

Tout d’abord, prenons une « liste de points du jour ». La règle de tri est du plus au moins de points ajoutés par les utilisateurs aujourd’hui.

Ensuite, lorsque l'utilisateur ajoutera des points, il effectuera une collecte ordonnée qui enregistre l'augmentation des points pour la journée.
Supposons qu'aujourd'hui nous soyons le 1er avril 2015 et que l'utilisateur avec l'UID 1 ait gagné 5 points grâce à une certaine opération.
La commande Redis est la suivante :

ZINCRBY rank:20150401 5 1
Copier après la connexion

Supposons que plusieurs autres utilisateurs ont également ajouté des points :

ZINCRBY rank:20150401 1 2
ZINCRBY rank:20150401 10 3
Copier après la connexion

Regardez les données dans le classement de l'ensemble ordonné actuel : 20150401 (le paramètre withscores peut être joint Obtenez le score de l'élément) :

ZRANGE rank:20150401 0 -1 withscores
Copier après la connexion
1) "2"
2) "1"
3) "1"
4) "5"
5) "3"
6) "10"
Copier après la connexion

Selon le score de haut en bas, obtenez le top10 :

ZREVRANGE rank:20150401 0 9 withscores
Copier après la connexion
1) "3"
2) "10"
3) "1"
4) "5"
5) "2"
6) "1"
Copier après la connexion

Comme il n'y a que trois éléments, nous avons interrogé ces données.

Si vous enregistrez chaque jour la liste de classement par points du jour, alors d'autres listes avec diverses astuces seront simples.
Par exemple, "classement d'hier":

ZREVRANGE rank:20150331 0 9 withscores
Copier après la connexion

Utilisez l'union pour réaliser la somme des points sur plusieurs jours et réaliser "le classement de la semaine dernière":

ZUNIONSTORE rank:last_week 7 rank:20150323 rank:20150324 rank:20150325 rank:20150326 rank:20150327 rank:20150328 rank:20150329 WEIGHTS 1 1 1 1 1 1 1
Copier après la connexion

De cette façon, le les points de 7 jours sont enregistrés et fusionnés dans le classement défini ordonné : last_week. Facteur de pondération POIDS S'il n'est pas indiqué, la valeur par défaut est 1. Afin de ne pas cacher les détails, je les ai délibérément écrits.
Ensuite, les informations permettant d'interroger le top 10 du classement de la semaine dernière sont :

ZREVRANGE rank:last_week  0 9 withscores
Copier après la connexion

"Liste mensuelle", "Liste trimestrielle", "Liste annuelle" et ainsi de suite.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal