如何仅按重复项排序
How to sort by duplicates only
我正在设计一个系统,用户播放的每首歌曲都会记录在我的 redis 数据库中。然后我在应用程序上创建了一个热门播放部分。该应用程序将索引我的数据库并拉回播放次数最多的曲目(换句话说,重复次数最多的曲目!)如果蕾哈娜播放了 4 次,泰勒 swift 播放了 1 次,假设 U2 播放了 2 次。我希望 rihanna 排在榜首,u2 排在第二位,然后 taylor swift 排在最后。
我的问题:
我如何按重复项对 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"
您需要 SORTED SET,而不是 LIST
来保存您的数据。
使用SORTED SET
,您可以计算曲目已播放的次数。每播放一首曲目,您可以调用ZINCRBY players 1 track-name
来增加指定曲目的计数器。这样,Redis 就按照播放频率对所有曲目进行了排序。当你想获得顶级 N
曲目时,只需发出以下命令:ZREVRANGE players 0 N-1
.
我正在设计一个系统,用户播放的每首歌曲都会记录在我的 redis 数据库中。然后我在应用程序上创建了一个热门播放部分。该应用程序将索引我的数据库并拉回播放次数最多的曲目(换句话说,重复次数最多的曲目!)如果蕾哈娜播放了 4 次,泰勒 swift 播放了 1 次,假设 U2 播放了 2 次。我希望 rihanna 排在榜首,u2 排在第二位,然后 taylor swift 排在最后。
我的问题:
我如何按重复项对 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"
您需要 SORTED SET,而不是 LIST
来保存您的数据。
使用SORTED SET
,您可以计算曲目已播放的次数。每播放一首曲目,您可以调用ZINCRBY players 1 track-name
来增加指定曲目的计数器。这样,Redis 就按照播放频率对所有曲目进行了排序。当你想获得顶级 N
曲目时,只需发出以下命令:ZREVRANGE players 0 N-1
.