diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/AreaManager.java b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/AreaManager.java index ee37a3882..6f4aad623 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/AreaManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/AreaManager.java @@ -239,8 +239,7 @@ public class AreaManager { //合并排行榜 //查找本服所有排行榜 - Set keys =new HashSet<>(); - RedisUtil.getInstence().arenaAddDim(areaId+ "*" + "RANK*",200,keys); + Set keys = RedisUtil.getInstence().getDimKey(areaId+ "*" + "RANK*",200); keys.forEach(k->{ Set> set= RedisUtil.getInstence().getAllZsetRange(k); @@ -269,8 +268,7 @@ public class AreaManager { //合并名称 //查找本服所有名称 - Set keys =new HashSet<>(); - RedisUtil.getInstence().arenaAddDim(areaId+ ":" + RedisKey.C_User_Name_Key+"*",200,keys); + Set keys = RedisUtil.getInstence().getDimKey(areaId+ ":" + RedisKey.C_User_Name_Key+"*",200); keys.forEach(k->{ Object oldUserId = RedisUtil.getInstence().get(k); 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 03bf77538..610cb68da 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 @@ -70,32 +70,29 @@ public class RedisUtil { new ConvertingCursor<>(redisConnection.scan(match1.build()), redisSerializer::deserialize)); } - public void arenaAddDim(String key, int count, Set keys) throws IOException { - Cursor cursor = RedisUtil.getInstence().scan( key, count); - while (cursor.hasNext()){ - //找到一次就添加一次 - keys.add(cursor.next()); - } - cursor.close(); - } - /** - * 模糊删除key - * serverId +":" + key + "*" + * 根据模糊key获取数据 * @param key * @param count - * @throws IOException + * @return */ - public void delDim(String key, int count) throws IOException { - Cursor cursor = RedisUtil.getInstence().scan(key, count); - while (cursor.hasNext()) { - //找到一次就添加一次 - String next = cursor.next(); - LOGGER.info("批量模糊删除{}",next); - RedisUtil.getInstence().del(next); + public Set getDimKey(String key, int count){ + Set keys = new HashSet<>(); + long start = System.currentTimeMillis(); + try { + Cursor cursor = RedisUtil.getInstence().scan(key, count); + while (cursor.hasNext()){ + //添加key + keys.add(cursor.next()); + } + cursor.close(); + } catch (IOException e) { + e.printStackTrace(); } - cursor.close(); + LOGGER.info("scan扫描共耗时:{} ms ,key数量:{},模糊key:{}",System.currentTimeMillis()-start,keys.size(),key); + return keys; } + /** * 指定缓存失效时间 * diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java index d9f0bc619..243b0ce2d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java @@ -653,7 +653,10 @@ public class DeathPathLogic { } - RedisUtil.getInstence().delDim(serverId +":DEATH_PATH*", -1); + Set keys = RedisUtil.getInstence().getDimKey(serverId + ":DEATH_PATH*", -1); + keys.forEach(key->{ + RedisUtil.getInstence().del(key); + }); } public static int nextDiscrete(double[] probs) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHeroLogic.java index 4a45adfa2..fd6ef4f75 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/help/HelpHeroLogic.java @@ -307,7 +307,10 @@ public class HelpHeroLogic { int serverId = GameApplication.serverId; String key = serverId +":" + RedisKey.HELP_FIGHT + "*"; // 模糊批量删除key - RedisUtil.getInstence().delDim(key,-1); + Set keys = RedisUtil.getInstence().getDimKey(key, -1); + keys.forEach(k->{ + RedisUtil.getInstence().del(k); + }); } /**