如何仅按重复项排序

时间:2017-06-09 10:05:47

标签: sorting redis duplicates redis-cli

我正在设计一个系统,用户播放的每首歌都会记录在我的redis数据库中。然后我在应用程序上创建一个Top Played部分。该应用程序将索引我的数据库,并拉回最多播放的曲目(换句话说,最重复的曲目!)如果rihanna被播放了4次,泰勒迅速1次,U2播放让我说2次。我希望rihanna成为榜首,u2成为第二名,然后泰勒迅速成为最后一名。

我的问题:

我如何通过重复排序redis?或者我该怎么做才能实现我的目标?

我尝试了什么:

我尝试过做redis-cli sort top_played alpha,但当然没有运气,因为那是字母。

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

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"

1 个答案:

答案 0 :(得分:2)

您需要SORTED SET而不是LIST来保存数据。

使用SORTED SET,您可以计算曲目播放的次数。每次播放曲目时,您都可以调用ZINCRBY players 1 track-name来增加指定曲目的计数器。通过这种方式,Redis可以按播放频率对所有曲目进行排序。如果您想获得最高N曲目,只需发出以下命令:ZREVRANGE players 0 N-1