0

我正在设计一个系统,用户播放的每一首歌都会登录到我的 redis 数据库中。然后我在应用程序上创建一个热门播放部分。该应用程序将索引我的数据库并拉回播放次数最多的曲目(换句话说,重复次数最多的曲目!)如果 rihanna 播放了 4 次,taylor swift 播放了 1 次,U2 播放了 2 次。我希望蕾哈娜位居榜首,u2 位居第二,泰勒斯威夫特位居最后。

我的问题:

我如何通过重复对redis进行排序?或者我能做些什么来实现我的目标?

我尝试了什么:

我试过做,redis-cli sort top_played alpha但当然,没有像 Alphabet 那样的运气。

以下是我想要的订单示例。

1. Rihanna
2. U2
3. Taylor Swift

下面是我的数据库输出:

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

1 回答 1

2

您需要一个SORTED SET而不是 aLIST来保存您的数据。

使用SORTED SET,您可以计算曲目已播放了多少次。每次播放曲目时,可以调用ZINCRBY players 1 track-name增加指定曲目的计数器。这样,Redis 就会按照播放频率对所有曲目进行排序。当您想获得最佳N曲目时,只需发出以下命令:ZREVRANGE players 0 N-1.

于 2017-06-09T11:30:58.157 回答