Maison > Article > base de données > Comment utiliser Redis pour implémenter la fonction de classement
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 !
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
Supposons que plusieurs autres utilisateurs ont également ajouté des points :
ZINCRBY rank:20150401 1 2 ZINCRBY rank:20150401 10 3
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
1) "2" 2) "1" 3) "1" 4) "5" 5) "3" 6) "10"
Selon le score de haut en bas, obtenez le top10 :
ZREVRANGE rank:20150401 0 9 withscores
1) "3" 2) "10" 3) "1" 4) "5" 5) "2" 6) "1"
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
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
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
"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!