获取考虑到相同排名的排位的逻辑的排位排行策略

在实施排名时,人们经常需要通过“按照得分倒序排序找出在第几位”之类的方式来确定排名,但这种方法无法考虑并列排名的情况。
因此,我在这里记录下一个能够同时考虑并列排名的简单逻辑。

桌子(举例)

rowmemberscore1user12002user21003user33004user42005user5400

流程处理

    1. 获取自己的分数

 

    1. 计算自己分数以上的数量

 

    将自己分数以上的数量加1

用Redis编写

    1. redis > zscore ranking_key user1 -> 200

 

    1. 在已排序集合类型中,查找键”ranking_key”中成员”user1″的分数,结果为200

 

    1. redis > zcount key 201 +inf -> 2

 

    1. 在已排序集合类型中,统计”ranking_key”中分数大于等于200的数量(通过将200加1来表示大于等于200),结果为2

 

    1. 2 +1 -> 3

 

    通过将得到的数量2加1来计算排名

命令

考试数据

在本地的Redis数据库中,将用户1的分数设定为200,添加到名为 ranking_key 的排行榜中。(整数) 1

将以下内容用中文写成同义句,只需一种选择:
redis 127.0.0.1:6379> ZADD ranking_key 100 user2
(整数)1

在本地Redis的一个名为”ranking_key”的有序集合中,将”user3″加入,分值为300。返回结果为整数1。

在本地将redis 127.0.0.1:6379添加入ranking_key的操作中,添加了user4并设置了分数为200,返回结果为1。

在本地Redis中,将400分添加到名为ranking_key的有序集合中,成员为user5。(整数)1

处理

使用Redis客户端连接到本地的Redis数据库,键名为ranking_key,通过命令ZSCORE找到user1对应的分值为200。

在本地的 Redis 中,统计 “ranking_key” 中分数大于等于201的元素数量,得到结果为2。

结局+1是排名。