Rank¶
服务概述¶
Rank排行榜服务是新浪云开发的用于在分布式环境下统计排名的服务,每个用户可以建立多个排行榜,每个排行榜支持类似key-value的pair操作,用户可以以O(logn)的时间复杂度获取指定key的排名(根据value的比较),还可以获取到前N排名的列表(时间复杂度为O(n))。
注解
Rank服务并不存放用户的所有数据,只以一定比率的冗余存放TopN的数据,这样带来一个影响,就是如果数据存在激增/减的话,可能影响排名结果的准确性。
排行榜服务的特点就是可靠、快速,可以用于实时排名,如游戏积分排名、软件下载排名,同时排行榜还支持过期时间,过期的数据将不会出现在排行榜中,这样方便进行周排名和月排名。
典型使用举例:
- 游戏积分排行榜:初始化时开发者可以从数据库导入用户的分数,然后根据用户在游戏中的得分,可以对用户的分数进行set、increase、decrease操作,当需要展示排行榜时,可以使用getlist、getrank进行展示。如果需要周排名或者月排名,则需要设置过期时间。为保证激增导致的数据准确性问题,可以定期从数据重新导入新的准确数据。
- 统计热门话题:开发者可以分析用户的发言、利用分词服务拆分单词,加入排行榜,则排行榜就可以用于展示热门话题,具体的使用和细节同上。
服务限制¶
单app最大排行榜数量 | 64个 |
排行榜最大key数量 | 10000个 |
namespace的最大长度 | 128字节 |
key的最大长度 | 256字节 |
value的取值范围 | -2147483648~2147483647 |
当排行榜的大小设置小于100时,排行榜实际保存的数据恒为1000,当排行榜的大小设置大于等于100时,排行榜将以10倍大小冗余保存数据。即排行榜设置大小1w,则排行榜实际可保存10w条数据。
排行榜的起止排名为0~num-1。