diff --git a/game-server/app/servers/role/handler/rankHandler.ts b/game-server/app/servers/role/handler/rankHandler.ts index 59c0dd6cd..03afd6dd9 100644 --- a/game-server/app/servers/role/handler/rankHandler.ts +++ b/game-server/app/servers/role/handler/rankHandler.ts @@ -94,7 +94,7 @@ export class RoleHandler { if (!redisKey) return resResult(STATUS.WRONG_PARMS); let r = new Rank(redisKey, { serverId, hid }); - let ranks = await r.getRankByRange(); + let ranks = await r.getRankByRange(200, 0); return resResult(STATUS.SUCCESS, { type, hid, ranks diff --git a/game-server/app/services/rankService.ts b/game-server/app/services/rankService.ts index 9cbf2ec08..855cd4e25 100644 --- a/game-server/app/services/rankService.ts +++ b/game-server/app/services/rankService.ts @@ -722,7 +722,7 @@ export class Rank { } public async getRankListWithMyRank(myId: myIdInter, isReverse = true) { - let ranks = await this.getRankByRange('+inf', '-inf', isReverse); + let ranks = await this.getRankByRange(1000, 0, isReverse); let newRanks = [], newMyRank: any; let myRank = ranks.find(cur => { return cur.isMyInfo(myId); @@ -745,13 +745,16 @@ export class Rank { * @param from * @param to */ - public async getRankDataByRankWithoutDetail(from: number | string = '+inf', to: number | string = '-inf') { + public async getRankDataByRankWithoutDetail(from: number | '+inf' = '+inf', to: number | '-inf' = '-inf') { let key = this.keyName.getName(); if (this.isUnion) { key = await this.generateUnionRank(); } - const rankFromDb = await redisClient().zrevrangebyscoreAsync(key, from, to, "WITHSCORES"); + const rankFromDb = (from == '+inf' && to == '-inf')? + (await redisClient().zrevrangebyscoreAsync(key, from, to, "WITHSCORES")): + (await redisClient().zrevrangeAsync(key, from, to, "WITHSCORES")) + ; let ranks: { rank: number, myId: {roleId?: string, guildCode?: string, hid?: number}, scores: number[] }[] = []; let num = 0; @@ -777,8 +780,14 @@ export class Rank { } const rankFromDb = isReverse? - (await redisClient().zrevrangebyscoreAsync(key, max, min, "WITHSCORES")): - (await redisClient().zrangebyscoreAsync(key, min, max, "WITHSCORES")); + ((max == '+inf' && min == '-inf')? + (await redisClient().zrevrangebyscoreAsync(key, max, min, "WITHSCORES")): + (await redisClient().zrevrangeAsync(key, min, max, "WITHSCORES")) + ): + ((max == '+inf' && min == '-inf')? + (await redisClient().zrangebyscoreAsync(key, min, max, "WITHSCORES")): + (await redisClient().zrangeAsync(key, min, max, "WITHSCORES")) + ) let num = 0; for (let ii = 0; ii < rankFromDb.length; ii += 2) { @@ -1244,7 +1253,7 @@ export async function getGeneralRank(role: RoleType & { rankReceived: number[] } return dic && dic.rankId == id; }); let r = new Rank(redisKey, { serverId }, false, 1); - let ranks = await r.getRankByRange('+inf', '-inf', id != RANK_TYPE.LADDER); + let ranks = await r.getRankByRange(1, 0, id != RANK_TYPE.LADDER); // if (ranks.length > 0) { let param = new GeneralRankParam(id, ranks[0], general, received); result.push({...param, general}); diff --git a/shared/pubUtils/redis.ts b/shared/pubUtils/redis.ts index 9aa2071e8..e2a92dd44 100644 --- a/shared/pubUtils/redis.ts +++ b/shared/pubUtils/redis.ts @@ -62,6 +62,8 @@ declare module 'redis' { zrevrankAsync(key: string, field: string): Promise; // 命令返回有序集中,指定区间内的成员,从大到小 zrevrangeAsync(key: string, start: number, end: number, withscores?: string): Promise; + // 命令返回有序集中,指定区间内的成员,从小到大 + zrangeAsync(key: string, start: number, end: number, withscores?: string): Promise; // 对有序集合中指定成员的分数加上增量 increment zincrbyAsync(key: string, increment: number, member: string): Promise; // 对有序集合中指定成员的分数加上增量 increment