generated from root/miduo_server
清除冗余公会信息
parent
e4acc31707
commit
4a11caa52e
|
@ -155,6 +155,7 @@ public class GuilidManager {
|
|||
continue;
|
||||
}
|
||||
Set<Integer> value = memberEntry.getValue();
|
||||
List<Integer> removes = new ArrayList<>();
|
||||
for (Integer uidTmp : value) {
|
||||
if(uidTmp != null) {
|
||||
PlayerInfoCache userTmp = UserManager.getPlayerInfoCache(uidTmp);
|
||||
|
@ -162,16 +163,19 @@ public class GuilidManager {
|
|||
long lastLoginTime = userTmp.getOffLineTime();
|
||||
//离线超过一周,踢出公会,并清除内存
|
||||
if((now - lastLoginTime) >= TimeUtils.WEEK){
|
||||
remove = guildInfo.removeMemberWithoutDb(position, uidTmp);
|
||||
removes.add(uidTmp);
|
||||
}
|
||||
} else {
|
||||
remove = guildInfo.removeMemberWithoutDb(position, uidTmp);
|
||||
removes.add(uidTmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(removes.size() > 0){
|
||||
guildInfo.removeMemberAllWithoutDb(position, removes);
|
||||
remove = true;
|
||||
}
|
||||
}
|
||||
if(remove){
|
||||
LOGGER.info("删除公会成员的公会id:{}", guildInfo.getId());
|
||||
guildInfo.resetMembers();
|
||||
}
|
||||
}
|
||||
|
@ -229,4 +233,26 @@ public class GuilidManager {
|
|||
key = RedisUtil.getInstence().getKey("guild-release", "");
|
||||
RedisUtil.getInstence().zsetAddOne(key,Integer.toString(guildInfo.getId()),levelTime);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Map<Integer,Set<Integer>> map = new HashMap<>();
|
||||
for(int j=0;j<200;j++){
|
||||
Set<Integer> set = new HashSet<>();
|
||||
for(int i = 0;i<200;i++){
|
||||
set.add(i);
|
||||
}
|
||||
map.put(j,set);
|
||||
}
|
||||
long now = System.currentTimeMillis();
|
||||
for (Map.Entry<Integer, Set<Integer>> memberEntry : map.entrySet()) {
|
||||
List<Integer> removes = new ArrayList<>();
|
||||
Set<Integer> value = memberEntry.getValue();
|
||||
for (Integer uidTmp : value) {
|
||||
removes.add(uidTmp);
|
||||
}
|
||||
value.removeAll(removes);
|
||||
}
|
||||
long end = System.currentTimeMillis();
|
||||
System.out.println("耗时:" + (end - now) + "ms");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -110,8 +110,8 @@ public class GuildInfo extends MongoBase {
|
|||
return remove;
|
||||
}
|
||||
|
||||
public boolean removeMemberWithoutDb(int type,int uid){
|
||||
boolean remove = members.get(type).remove(uid);
|
||||
public boolean removeMemberAllWithoutDb(int type,List<Integer> uids){
|
||||
boolean remove = members.get(type).removeAll(uids);
|
||||
return remove;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue