diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java index b13e377ef..6425cb7c8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisUtil.java @@ -703,6 +703,20 @@ public class RedisUtil { } } + //操作sortset score<<32+time + public void zsetAddOneOffsetByTime(String key, String uid, int score){ + for (int i = 0; i < MAX_TRY_TIMES; i++) { + try { + long s= (long)score<<40; + long sort = s+(0xFFFFFFFFFFL-(int)(System.currentTimeMillis()/1000)); + redisTemplate.opsForZSet().add(key, uid, sort); + return; + } catch (Exception e) { + TimeUtils.sleep(FAILED_SLEEP); + } + } + } + public void zsetRemoveOne(String key, String value){ for (int i = 0; i < MAX_TRY_TIMES; i++) { try { @@ -772,6 +786,7 @@ public class RedisUtil { return null; } + public Long getZSetreverseRank(String type,String key, String value){ String rkey = getKey(type,key); for (int i = 0; i < MAX_TRY_TIMES; i++) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 7207066ea..d3f9d4424 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -2257,7 +2257,7 @@ public class MapLogic { //排行榜 String rankKey = RedisKey.getKey(RedisKey.MONSTER_ATTACK_RANK,"", false); - RedisUtil.getInstence().zsetAddOne(rankKey, String.valueOf(user.getId()), checkFightId+1); + RedisUtil.getInstence().zsetAddOneOffsetByTime(rankKey, String.valueOf(user.getId()), checkFightId); //归还水滴 Map itemMap = new HashMap<>(1); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/monsterAttack/GetMonsterAttackRankHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/monsterAttack/GetMonsterAttackRankHandler.java index 436a6f925..a85301aad 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/monsterAttack/GetMonsterAttackRankHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/monsterAttack/GetMonsterAttackRankHandler.java @@ -34,7 +34,7 @@ public class GetMonsterAttackRankHandler extends BaseHandler item : rankInfo) { String value = item.getValue(); - int score = item.getScore().intValue(); + int score = (int)(item.getScore().longValue()>>40); int uid = Integer.parseInt(value); User user = UserManager.getUser(uid); @@ -58,7 +58,7 @@ public class GetMonsterAttackRankHandler extends BaseHandler>40); int myRank = RedisUtil.getInstence().getZSetreverseRank(RedisKey.MONSTER_ATTACK_RANK, "", Integer.toString(uid)).intValue(); if(myRank>300){ score=-1;