介紹:用于實(shí)時(shí)排行計(jì)算。設(shè)置數(shù)值能立即獲取到數(shù)值排行(10億級數(shù)據(jù)能在1毫秒內(nèi)完成)。
* 說明
1. 系統(tǒng)支持2^32個(gè)獨(dú)立的排行榜同,用榜單id區(qū)分,**榜單id大于等于零為臨時(shí)榜單,進(jìn)程退出后丟失**,榜單id小于零為持久榜單。
2. 每個(gè)榜單內(nèi)可插入2^32個(gè)項(xiàng)目id,每個(gè)項(xiàng)目id對應(yīng)一個(gè)數(shù)值和一個(gè)時(shí)間,時(shí)間在數(shù)值可自動設(shè)置為當(dāng)前系統(tǒng)時(shí)間(精度+-10毫秒);
3. 排行就是項(xiàng)目數(shù)值大小的排列次序,數(shù)值最大的排行為 1 ;
4. 對于相同數(shù)值,會得到相同排行,但會占用排行名額。比如有兩個(gè)第一,那么第二會缺失,下一個(gè)是第三;
5. 項(xiàng)目id 和 數(shù)值 都為32位正整數(shù),超過此范圍會按位截?cái)啵? 6. 這些函數(shù)的返回值都為一個(gè)數(shù)組: [錯誤碼,結(jié)果,...],無錯誤時(shí),錯誤碼為 undefined 。
### zx.排行設(shè)置(榜單id,項(xiàng)id,數(shù)值,[時(shí)間]);
新增或更新某項(xiàng)數(shù)值,即使數(shù)值不變也會刷新時(shí)間,如果不帶時(shí)間參數(shù)則使用當(dāng)前系統(tǒng)時(shí)間。
返回值 = [錯誤碼,原值,原時(shí)間];
### zx.排行刪除(榜單id,[項(xiàng)id]);
刪除榜單中的某項(xiàng),如果不帶項(xiàng)id參數(shù)則刪除整個(gè)榜單。
返回值 = [錯誤碼];如果id項(xiàng)不存在或刪除數(shù)量為零,錯誤碼為1
### zx.排行讀取(榜單id,項(xiàng)id,[讀取選項(xiàng)]);
讀取某項(xiàng)的數(shù)值或獲取更多信息。
讀取選項(xiàng) = 0 或不設(shè)置: 返回值 = [錯誤碼,數(shù)值];
讀取選項(xiàng) = 1: 返回值 = [錯誤碼,數(shù)值,排名,null];
讀取選項(xiàng) = 2: 返回值 = [錯誤碼,數(shù)值,null,時(shí)間];
讀取選項(xiàng) > 2: 返回值 = [錯誤碼,數(shù)值,排名,時(shí)間];
### zx.排行設(shè)取(榜單id,項(xiàng)id,數(shù)值,[時(shí)間]);
新增或更新某項(xiàng)數(shù)值,并獲取最新排行。
返回值 = [錯誤碼,原值,原時(shí)間,現(xiàn)在的排行];
### zx.排行計(jì)算(榜單id,數(shù)值);
計(jì)算一個(gè)數(shù)值(應(yīng)當(dāng))所處的排行,此操作不改變或影響排行榜.
返回值 = [錯誤碼,排行];
### zx.排行項(xiàng)列取(榜單id,起始項(xiàng)id,數(shù)量);
按項(xiàng)目id的順序列出榜單內(nèi)的項(xiàng)目
返回[錯誤碼,[id,值],[id,值]...];結(jié)果包含起始項(xiàng),數(shù)量不大于10000;
如果需要反方向列取,數(shù)量可以設(shè)置為負(fù)數(shù),結(jié)果包括起始項(xiàng)。
### zx.排行值列取(榜單id,起始值,數(shù)量);
根據(jù)數(shù)值大小列取榜單項(xiàng)目,從起始值開始由小到大列取。
* 返回值[錯誤碼,[id,值,時(shí)間],[id,值,時(shí)間]...],結(jié)果包含起始值,數(shù)量不大于10000。
* 如果需要反方向列取,數(shù)量可以設(shè)置為負(fù)數(shù),結(jié)果也包含起始值對應(yīng)項(xiàng)。
* 注意:對于值相同的項(xiàng)目,他們是按id排序。(需要按時(shí)間排序可以自行處理,但這里面有一個(gè)小坑:因?yàn)閿?shù)量限制,有些數(shù)值相同的項(xiàng)目可能沒有完整列出,也就無法有效排序,設(shè)置足夠大的數(shù)量甚至多次查詢可以解決這個(gè)問題。)
* 取TOP100示例:zx.排行值列取(榜單id,0xffffffff,-100);
