2017-06-09 3 views
0

Je suis en train de concevoir un système dans lequel chaque chanson jouée par un utilisateur sera enregistrée dans ma base de données redis. Je crée ensuite une section Top Played sur l'application. L'application va indexer ma DB et retirer les pistes les plus jouées (en d'autres termes, les pistes avec le plus de doublons!) Si rihanna a été joué 4 fois, taylor rapide 1 fois et U2 joué disons 2 fois. Je veux que rihanna soit en tête de liste, que je sois deuxième et que je sois le dernier à être le dernier.Comment trier par doublons seulement

Ma question:

Comment trier avec Redis par des doublons? Ou que puis-je faire pour atteindre mon objectif?

Ce que j'ai essayé:

J'ai essayé de faire le redis-cli sort top_played alpha mais bien sûr, pas de chance que des thats passe par ordre alphabétique.

Voici un exemple de l'ordre que je veux.

1. Rihanna 
2. U2 
3. Taylor Swift 

Ci-dessous est ma sortie de base de données:

redis-cli lrange top_played 0 7 
1) "u2" 
2) "u2" 
3) "taylor swift" 
4) "rihanna" 
5) "rihanna" 
6) "rihanna" 
7) "rihanna" 

Répondre

2

Vous avez besoin d'un SORTED SET, pas un LIST, pour sauvegarder vos données.

Avec SORTED SET, vous pouvez compter combien de fois une piste a été jouée. Chaque fois qu'une piste est jouée, vous pouvez appeler ZINCRBY players 1 track-name pour augmenter le compteur de la piste spécifiée. De cette façon, Redis trie toutes les pistes avec la fréquence jouée. Lorsque vous souhaitez obtenir la piste supérieure N, exécutez la commande suivante: ZREVRANGE players 0 N-1.

+0

Désolé était parti mais travaille un charme! Merci beaucoup. Pensé que ce ne serait pas possible, appréciez-le! – irishwill200