2021-04-28 02:32:45

Redis实现实时排行榜

我们在网上常常会看到各式各样的排行榜,比如:
游戏中的战斗力排行榜和玩家分数排行榜
音乐网站上的华语歌曲排行榜
商城中的收藏排行榜

以游戏战斗力排行榜为例,一般包括以下常见内容:

  • 能够记录每个玩家的分数
  • 能够对玩家的分数进行更新
  • 能够查询每个玩家的分数和名次
  • 能够按分数查询排名前N名的玩家
  • 能够查询排在指定玩家前后M名的玩家

我们使用Redis中的有序集合实现此功能

1.zadd–设置玩家分数

> zadd ranking 100 user1
1
> zadd ranking 95 user2
1
> zadd ranking 95 user3
1
> zadd ranking 90 user4
1

2.zscore–查看玩家分数

> zscore ranking user1
100

3.zrevrange–按分数从大到小查看排行榜

查看所有玩家分数

> zrevrange ranking 0 -1 withscores
user1
100
user3
95
user2
95
user4
90

查看前三名玩家的分数

> zrevrange ranking 0 2 withscores
user1
100
user3
95
user2
95

4.zrevrank–查看玩家排名

查询user1user4的排名

> zrevrank ranking user1
0
> zrevrank ranking user4
3

5.查询指定玩家前后5名的玩家

未完待续

本文链接:http://zjy35.com/post/redis-ranking-list.html

-- EOF --