From 919c05ae335ac973479c080627d7274778b6bcef Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Tue, 20 Aug 2019 14:15:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BD=E6=BD=AE=E6=8E=92=E8=A1=8C=E6=A6=9C?= =?UTF-8?q?=E5=90=8C=E6=B3=A2=E6=AC=A1=E6=A0=B9=E6=8D=AE=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=8E=92=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/db/redis/RedisUtil.java | 15 +++++++++++++++ .../com/ljsd/jieling/handler/map/MapLogic.java | 2 +- .../GetMonsterAttackRankHandler.java | 4 ++-- 3 files changed, 18 insertions(+), 3 deletions(-) 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 0691055fa..7c6c76514 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;