介绍:用于实时排行计算。设置数值能立即获取到数值排行(10亿级数据能在1毫秒内完成)。
* 说明
1. 系统支持2^32个独立的排行榜同,用榜单id区分,**榜单id大于等于零为临时榜单,进程退出后丢失**,榜单id小于零为持久榜单。
2. 每个榜单内可插入2^32个项目id,每个项目id对应一个数值和一个时间,时间在数值可自动设置为当前系统时间(精度+-10毫秒);
3. 排行就是项目数值大小的排列次序,数值最大的排行为 1 ;
4. 对于相同数值,会得到相同排行,但会占用排行名额。比如有两个第一,那么第二会缺失,下一个是第三;
5. 项目id 和 数值 都为32位正整数,超过此范围会按位截断;
6. 这些函数的返回值都为一个数组: [错误码,结果,...],无错误时,错误码为 undefined 。
### zx.排行设置(榜单id,项id,数值,[时间]);
新增或更新某项数值,即使数值不变也会刷新时间,如果不带时间参数则使用当前系统时间。
返回值 = [错误码,原值,原时间];
### zx.排行删除(榜单id,[项id]);
删除榜单中的某项,如果不带项id参数则删除整个榜单。
返回值 = [错误码];如果id项不存在或删除数量为零,错误码为1
### zx.排行读取(榜单id,项id,[读取选项]);
读取某项的数值或获取更多信息。
读取选项 = 0 或不设置: 返回值 = [错误码,数值];
读取选项 = 1: 返回值 = [错误码,数值,排名,null];
读取选项 = 2: 返回值 = [错误码,数值,null,时间];
读取选项 > 2: 返回值 = [错误码,数值,排名,时间];
### zx.排行设取(榜单id,项id,数值,[时间]);
新增或更新某项数值,并获取最新排行。
返回值 = [错误码,原值,原时间,现在的排行];
### zx.排行计算(榜单id,数值);
计算一个数值(应当)所处的排行,此操作不改变或影响排行榜.
返回值 = [错误码,排行];
### zx.排行项列取(榜单id,起始项id,数量);
按项目id的顺序列出榜单内的项目
返回[错误码,[id,值],[id,值]...];结果包含起始项,数量不大于10000;
如果需要反方向列取,数量可以设置为负数,结果包括起始项。
### zx.排行值列取(榜单id,起始值,数量);
根据数值大小列取榜单项目,从起始值开始由小到大列取。
* 返回值[错误码,[id,值,时间],[id,值,时间]...],结果包含起始值,数量不大于10000。
* 如果需要反方向列取,数量可以设置为负数,结果也包含起始值对应项。
* 注意:对于值相同的项目,他们是按id排序。(需要按时间排序可以自行处理,但这里面有一个小坑:因为数量限制,有些数值相同的项目可能没有完整列出,也就无法有效排序,设置足够大的数量甚至多次查询可以解决这个问题。)
* 取TOP100示例:zx.排行值列取(榜单id,0xffffffff,-100);