diff --git a/src/main/java/com/nis/util/AsnCacheUtils.java b/src/main/java/com/nis/util/AsnCacheUtils.java index 481074431..6d0a239ce 100644 --- a/src/main/java/com/nis/util/AsnCacheUtils.java +++ b/src/main/java/com/nis/util/AsnCacheUtils.java @@ -65,29 +65,17 @@ public class AsnCacheUtils{ return configGroupInfos; } /** + * * 初始化缓存 + * + * @param force是否强制刷新 */ //@PostConstruct - public synchronized static void init() { + public synchronized static void init(boolean force) { long start=System.currentTimeMillis(); logger.warn("AsnCacheUtils init start..."); Cache cache=getCache(ASN_NO_CACHE); - //查询总量 - Long count=configGroupInfoDao.getCountByType(4); - //缓存key - boolean loadDatabase=false; - if(cache.getKeys().size()==0) { - loadDatabase=true; - }else { - long c=0l; - for(Object key:cache.getKeys()) { - c+=getMap(key).size(); - } - if(c!=count) { - loadDatabase=true; - } - } - if(loadDatabase) { + if(force) { List list=configGroupInfoDao.findAllList(4); Map> groupMap=Maps.newHashMap(); for(ConfigGroupInfo configGroupInfo:list) { @@ -104,7 +92,41 @@ public class AsnCacheUtils{ Element element = new Element(e.getKey(), e.getValue()); cache.put(element); } + }else { + //查询总量 + Long count=configGroupInfoDao.getCountByType(4); + boolean loadDatabase=false; + if(cache.getKeys().size()==0) { + loadDatabase=true; + }else { + long c=0l; + for(Object key:cache.getKeys()) { + c+=getMap(key).size(); + } + if(c!=count) { + loadDatabase=true; + } + } + if(loadDatabase) { + List list=configGroupInfoDao.findAllList(4); + Map> groupMap=Maps.newHashMap(); + for(ConfigGroupInfo configGroupInfo:list) { + if(groupMap.containsKey(configGroupInfo.getAsnId()/cache_rage)) { + groupMap.get(configGroupInfo.getAsnId()/cache_rage) + .put(configGroupInfo.getAsnId(), configGroupInfo); + }else { + Map m=Maps.newHashMap(); + m.put(configGroupInfo.getAsnId(), configGroupInfo); + groupMap.put(configGroupInfo.getAsnId()/cache_rage, m); + } + } + for(Entry> e:groupMap.entrySet()) { + Element element = new Element(e.getKey(), e.getValue()); + cache.put(element); + } + } } + long end=System.currentTimeMillis(); logger.warn("AsnCacheUtils init finish,cost:"+(end-start)); } diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index 99d727908..255e3817b 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -1197,7 +1197,7 @@ public class BaseController { ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else if (regionDict.getFunctionId().equals(600)) {// ASN IP //加载asn缓存 - AsnCacheUtils.init(); + AsnCacheUtils.init(true); BlockingQueue list = ei.getDataList(AsnIpTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, asnNoMaps, list); } else if (regionDict.getFunctionId().equals(301)) {// DDOS IP diff --git a/src/main/java/com/nis/web/controller/basics/AsnIpController.java b/src/main/java/com/nis/web/controller/basics/AsnIpController.java index bad7cdfdf..d4f2f833f 100644 --- a/src/main/java/com/nis/web/controller/basics/AsnIpController.java +++ b/src/main/java/com/nis/web/controller/basics/AsnIpController.java @@ -50,7 +50,7 @@ public class AsnIpController extends BaseController{ // List policyGroups=policyGroupInfoService.findPolicyGroupInfosByType(4); // model.addAttribute("policyGroups", policyGroups); - AsnCacheUtils.init(); + AsnCacheUtils.init(false); List policyGroups=AsnCacheUtils.getAllAsnGroup(); model.addAttribute("policyGroups", policyGroups); return "/basics/asnIpCfgList"; @@ -137,7 +137,7 @@ public class AsnIpController extends BaseController{ @RequestMapping(value="ajaxGroupName",method=RequestMethod.POST) @ResponseBody public Map ajaxGroupName(Model model,String ids){ - AsnCacheUtils.init(); + AsnCacheUtils.init(false); Map groupMap=new HashMap<>(); for(String id:ids.split(",")) { ConfigGroupInfo info=AsnCacheUtils.get(Long.parseLong(id)); diff --git a/src/main/java/com/nis/web/service/basics/AsnIpCfgService.java b/src/main/java/com/nis/web/service/basics/AsnIpCfgService.java index 236d29e73..ce1f7a0f0 100644 --- a/src/main/java/com/nis/web/service/basics/AsnIpCfgService.java +++ b/src/main/java/com/nis/web/service/basics/AsnIpCfgService.java @@ -168,7 +168,7 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { configGroupInfoS.clear(); } //刷新缓存 - AsnCacheUtils.init(); + AsnCacheUtils.init(true); long end=System.currentTimeMillis(); logger.warn("Save group finish,cost:"+(end-start)); }