获取考虑到相同排名的排位的逻辑的排位排行策略
在实施排名时,人们经常需要通过“按照得分倒序排序找出在第几位”之类的方式来确定排名,但这种方法无法考虑并列排名的情况。
因此,我在这里记录下一个能够同时考虑并列排名的简单逻辑。
桌子(举例)
rowmemberscore1user12002user21003user33004user42005user5400
流程处理
-
- 获取自己的分数
-
- 计算自己分数以上的数量
- 将自己分数以上的数量加1
用Redis编写
-
- redis > zscore ranking_key user1 -> 200
-
- 在已排序集合类型中,查找键”ranking_key”中成员”user1″的分数,结果为200
-
- redis > zcount key 201 +inf -> 2
-
- 在已排序集合类型中,统计”ranking_key”中分数大于等于200的数量(通过将200加1来表示大于等于200),结果为2
-
- 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是排名。