diff --git a/src/main/java/com/nis/domain/restful/MaatRelation.java b/src/main/java/com/nis/domain/restful/MaatRelation.java index 031d6ce..cc8f370 100644 --- a/src/main/java/com/nis/domain/restful/MaatRelation.java +++ b/src/main/java/com/nis/domain/restful/MaatRelation.java @@ -7,7 +7,15 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; - +/** + * + *

Title: MaatRelation

+ *

Description: 描述:编译id,分组关系id,域配置id等的对应关系

+ *

Company: IIE

+ * @author rkg + * @date 2018年6月1日 + * + */ public class MaatRelation implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/nis/listener/CompileGroupRegionRela.java b/src/main/java/com/nis/listener/CompileGroupRegionRela.java index c9d65e0..7111271 100644 --- a/src/main/java/com/nis/listener/CompileGroupRegionRela.java +++ b/src/main/java/com/nis/listener/CompileGroupRegionRela.java @@ -16,6 +16,7 @@ import org.springframework.web.context.ContextLoaderListener; import com.nis.domain.restful.CompileAndGroupRelations; import com.nis.domain.restful.GroupAndRegionRelations; import com.nis.domain.restful.MaatRelation; +import com.nis.util.Configurations; import com.nis.web.service.SpringContextHolder; /** @@ -34,7 +35,7 @@ public class CompileGroupRegionRela extends ContextLoaderListener { @Override public void contextInitialized(ServletContextEvent event) { try { - for (int i = 0; i < 6; i++) { + for (int i = 0; i redisTemplate = SpringContextHolder.getBean("redisTemplate" + i); getAllId(redisTemplate, i); } diff --git a/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java b/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java index 085b0c2..af5d88b 100644 --- a/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java +++ b/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java @@ -183,7 +183,7 @@ public class ConfigSourcesController extends BaseRestController { long seq_regionid1 = configRedisService.getIncrId("SEQ_REGIONID"); long seq_regionid2 = configRedisService.getIncrId("SEQ_REGIONID"); // int id=2; - configMap.put("cfg_id", seq_compileid + ""); + configMap.put("compile_id", seq_compileid + ""); configMap.put("service", service + ""); configMap.put("action", "0"); configMap.put("do_blacklist", "1"); @@ -198,7 +198,7 @@ public class ConfigSourcesController extends BaseRestController { List> groupMapList = new ArrayList>(); Map groupMap = new HashMap(); groupMap.put("group_id", seq_groupid + ""); - groupMap.put("cfg_id", seq_compileid + ""); + groupMap.put("compile_id", seq_compileid + ""); groupMap.put("is_valid", "1"); groupMap.put("op_time", time); groupMap.put("service", service + ""); diff --git a/src/main/java/com/nis/web/service/restful/ConfigRedisService.java b/src/main/java/com/nis/web/service/restful/ConfigRedisService.java index 18b2388..b4e2e45 100644 --- a/src/main/java/com/nis/web/service/restful/ConfigRedisService.java +++ b/src/main/java/com/nis/web/service/restful/ConfigRedisService.java @@ -48,18 +48,4 @@ public interface ConfigRedisService { public void delMaatConfig(Map>> idMap); - - /** - * 下发配置成功后,需要更新编译,组,域等配置id的对应关系 - * @param configMap - */ - public void addMaatRelation(Map> configMap); - - /** - * 删除配置成功后,需要更新编译,组,域等配置id的对应关系 - * @param maatConfigLis - * @param service 业务类型 - */ - public void delMaatRelation(Map>> idMap); - } diff --git a/src/main/java/com/nis/web/service/restful/ConfigRedisServiceimpl.java b/src/main/java/com/nis/web/service/restful/ConfigRedisServiceimpl.java index 9d0451d..72dc89b 100644 --- a/src/main/java/com/nis/web/service/restful/ConfigRedisServiceimpl.java +++ b/src/main/java/com/nis/web/service/restful/ConfigRedisServiceimpl.java @@ -6,7 +6,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,6 +22,7 @@ import com.nis.domain.restful.GroupAndRegionRelations; import com.nis.domain.restful.MaatConfig; import com.nis.domain.restful.MaatRelation; import com.nis.listener.CompileGroupRegionRela; +import com.nis.util.Configurations; import com.nis.util.ReadMaatXmlUtil; import com.nis.util.ServiceAndRDBIndexReal; import com.nis.web.service.SpringContextHolder; @@ -31,28 +31,11 @@ import com.nis.web.service.SpringContextHolder; public class ConfigRedisServiceimpl implements ConfigRedisService { private static Logger logger = LoggerFactory.getLogger(ConfigRedisServiceimpl.class); - @Transactional - public void saveTestConfig(List> listMap, int service) { - RedisTemplate redisTemplate0 = SpringContextHolder.getBean("redisTemplate2"); - RedisTemplate redisTemplate1 = SpringContextHolder.getBean("redisTemplate1"); - System.out.println(redisTemplate0.opsForValue().get("MAAT_VERSION")); - System.out.println(redisTemplate1.opsForValue().get("MAAT_VERSION")); - redisTemplate0.boundValueOps("MAAT_VERSION").increment(2l); - if (service == 2) { - int i = service / 0; - } - redisTemplate1.boundValueOps("MAAT_VERSION").increment(1l); - - // redisTemplate0.exec(); - // redisTemplate1.exec(); - - } - @Transactional public void saveUnMaatConfig(Map>> configMap) { if (configMap != null && configMap.size() > 0) { for (Integer redisDBIndex : configMap.keySet()) { - if (redisDBIndex >= 0 && redisDBIndex <= 15) { + if (redisDBIndex >= 0 && redisDBIndex < Configurations.getIntProperty("maxRedisDBIndex", 6)) { RedisTemplate redisTemplate = SpringContextHolder .getBean("redisTemplate" + redisDBIndex); List> listMap = configMap.get(redisDBIndex); @@ -69,7 +52,7 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { MaatXmlConfig maatXmlConfig = ReadMaatXmlUtil.getMaatConfigByService(service); if (maatXmlConfig != null) { List expressionList = maatXmlConfig.getExpressionList(); - String maatKey = ""; + String maatKey = null; for (MaatXmlExpr maatXmlExpr : expressionList) { if (0 == maatXmlExpr.getType().intValue()) { StringBuffer keyBF = new StringBuffer(); @@ -97,26 +80,40 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } } maatKey = keyBF.toString(); - System.out.println(keyBF.toString()); - System.out.println(valBF.toString()); redisTemplate.opsForValue().set(keyBF.toString().toUpperCase(), valBF.toString()); + logger.info("向{}号redis数据库添加了一条配置,key是{},value是{}", redisDBIndex, + keyBF.toString().toUpperCase(), valBF.toString()); break; } } for (MaatXmlExpr maatXmlExpr : expressionList) { if (maatXmlExpr.getKeyExpression().toUpperCase().equals("MAAT_UPDATE_STATUS")) { - String zset = maatKey.replace("EFFECTIVE_RULE:", "ADD,"); - redisTemplate.boundZSetOps("MAAT_UPDATE_STATUS").add(zset, maatVersion); + if (maatKey != null) { + String zset = maatKey.replace("EFFECTIVE_RULE:", "ADD,"); + redisTemplate.boundZSetOps("MAAT_UPDATE_STATUS").add(zset, maatVersion); + logger.info("向{}号redis数据库更新了MAAT_UPDATE_STATUS,内容是{},SCORES是{}", + redisDBIndex, zset.toUpperCase(), maatVersion); + + } } else if (maatXmlExpr.getKeyExpression().toUpperCase().equals("MAAT_RULE_TIMER")) { - Double score = 0d;// 界面下发的配置没有超时时间所以这里设置为0 - redisTemplate.boundZSetOps("MAAT_RULE_TIMER").add(maatKey, score); + if (maatKey != null) { + Double score = 0d;// 界面下发的配置没有超时时间所以这里设置为0 + redisTemplate.boundZSetOps("MAAT_RULE_TIMER").add(maatKey, score); + + logger.info("向{}号redis数据库更新了MAAT_RULE_TIMER,内容是{},SCORES是{}", redisDBIndex, + maatKey, score); + + } } else if (maatXmlExpr.getKeyExpression().toUpperCase() .equals("MAAT_VERSION_TIMER")) { Long nowTime = new Date().getTime(); nowTime = nowTime / 1000l; Double score = nowTime.doubleValue();// 使用redis自带的time,得到当前时间的秒 redisTemplate.boundZSetOps("MAAT_VERSION_TIMER").add(maatVersion + "", score); + + logger.info("向{}号redis数据库更新了MAAT_VERSION_TIMER,内容是{},SCORES是{}", redisDBIndex, + maatVersion, score); } } List seqList = maatXmlConfig.getSequenceList(); @@ -137,24 +134,28 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } redisTemplate.boundValueOps("MAAT_VERSION").increment(1l); + logger.info("向{}号redis数据库更新了MAAT_VERSION,更新后版本是{}", redisDBIndex, + Integer.valueOf(maatVersionStr) + 1); } } } } - @Override + /** + * 下发配置成功后,需要更新编译,组,域等配置id的对应关系 + */ public void addMaatRelation(Map> configMap) { if (configMap != null && configMap.size() > 0) { for (Integer redisDBIndex : configMap.keySet()) { - if (redisDBIndex >= 0 && redisDBIndex <= 15) { + if (redisDBIndex >= 0 && redisDBIndex < Configurations.getIntProperty("maxRedisDBIndex", 6)) { // MaatRelation maatRelation = // CompileGroupRegionRela.getIdRelationMap().get(redisDBIndex); List maatConfigList = configMap.get(redisDBIndex); if (maatConfigList != null && maatConfigList.size() > 0) { for (MaatConfig maatConfig : maatConfigList) { Map compileMap = maatConfig.getCompileMap(); - String cfgIdStr = compileMap.get("cfg_id"); + String cfgIdStr = compileMap.get("compile_id"); CompileAndGroupRelations compileAndGroupRelations = new CompileAndGroupRelations(); compileAndGroupRelations.setCompileId(Long.valueOf(cfgIdStr)); compileAndGroupRelations.setGroupIdList(new ArrayList()); @@ -176,7 +177,12 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } - public void addGroupAndRegionRelations(List> regionMapList, + /** + * 封装组id与域id对应关系并添加到对象中 + * @param regionMapList + * @param compileAndGroupRelations + */ + private void addGroupAndRegionRelations(List> regionMapList, CompileAndGroupRelations compileAndGroupRelations) { if (regionMapList != null && regionMapList.size() > 0 && compileAndGroupRelations != null) { for (Map map : regionMapList) { @@ -191,118 +197,12 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } - public void addMaatRelationOld(Map> configMap) { - if (configMap != null && configMap.size() > 0) { - for (Integer redisDBIndex : configMap.keySet()) { - if (redisDBIndex >= 0 && redisDBIndex <= 15) { - MaatRelation maatRelation = CompileGroupRegionRela.getIdRelationMap().get(redisDBIndex); - List maatConfigList = configMap.get(redisDBIndex); - if (maatConfigList != null && maatConfigList.size() > 0) { - for (MaatConfig maatConfig : maatConfigList) { - // MaatXmlConfig maatXmlConfig = - // ReadMaatXmlUtil.getMaatConfigByService(service); - List> groupMapList = maatConfig.getGroupMapList(); - if (groupMapList != null && groupMapList.size() > 0) { - for (Map map : groupMapList) { - String compileIdStr = map.get("cfg_id"); - String groupIdStr = map.get("group_id"); - if (compileIdStr != null && !compileIdStr.equals("") && groupIdStr != null - && !groupIdStr.equals("")) { - Long groupId = Long.valueOf(groupIdStr); - Long compileId = Long.valueOf(compileIdStr); - Map> groupAndCompileMap = maatRelation.getGroupAndCompileMap(); - if (groupAndCompileMap != null) { - if (groupAndCompileMap.containsKey(groupId)) { - groupAndCompileMap.get(groupId).add(compileId); - } else { - Set set = new HashSet(); - set.add(compileId); - groupAndCompileMap.put(groupId, set); - } - } else { - Map> groupAndCompileMap1 = new ConcurrentHashMap>(); - Set set = new HashSet(); - set.add(compileId); - groupAndCompileMap1.put(groupId, set); - maatRelation.setGroupAndCompileMap(groupAndCompileMap1); - } - - Map> compileAndGroupMap = maatRelation.getCompileAndGroupMap(); - if (compileAndGroupMap != null) { - if (compileAndGroupMap.containsKey(compileId)) { - compileAndGroupMap.get(compileId).add(groupId); - } else { - Set set = new HashSet(); - set.add(groupId); - compileAndGroupMap.put(compileId, set); - } - } else { - Map> compileAndGroupMap1 = new ConcurrentHashMap>(); - Set set = new HashSet(); - set.add(groupId); - compileAndGroupMap1.put(compileId, set); - maatRelation.setCompileAndGroupMap(compileAndGroupMap1); - } - } - } - } - List> ipRegionMapList = maatConfig.getIpRegionMapList(); - setReionAndGroupRela(ipRegionMapList, maatRelation); - List> numRegionMapList = maatConfig.getNumRegionMapList(); - setReionAndGroupRela(numRegionMapList, maatRelation); - List> strRegionMapList = maatConfig.getStrRegionMapList(); - setReionAndGroupRela(strRegionMapList, maatRelation); - List> strStrRegionMapList = maatConfig.getStrStrRegionMapList(); - setReionAndGroupRela(strStrRegionMapList, maatRelation); - List> fileDigestRegionMapList = maatConfig.getFileDigestRegionMapList(); - setReionAndGroupRela(fileDigestRegionMapList, maatRelation); - List> fileLikeRegionMapList = maatConfig.getFileLikeRegionMapList(); - setReionAndGroupRela(fileLikeRegionMapList, maatRelation); - - } - } - - } - } - } - - } - - public void setReionAndGroupRela(List> regionMapList, MaatRelation maatRelation) { - if (regionMapList != null && regionMapList.size() > 0) { - for (Map map : regionMapList) { - String regionIdStr = map.get("region_id"); - String groupIdStr = map.get("group_id"); - if (regionIdStr != null && !regionIdStr.equals("") && groupIdStr != null && !groupIdStr.equals("")) { - Long groupId = Long.valueOf(groupIdStr); - Long regionId = Long.valueOf(regionIdStr); - Map> groupAndRegionMap = maatRelation.getGroupAndRegionMap(); - if (groupAndRegionMap != null) { - if (groupAndRegionMap.containsKey(groupId)) { - groupAndRegionMap.get(groupId).add(regionId); - } else { - Set set = new HashSet(); - set.add(regionId); - groupAndRegionMap.put(groupId, set); - } - } else { - Map> groupAndRegionMap1 = new ConcurrentHashMap>(); - Set set = new HashSet(); - set.add(regionId); - groupAndRegionMap1.put(groupId, set); - maatRelation.setGroupAndRegionMap(groupAndRegionMap1); - } - } - } - } - } - @Override @Transactional public void saveMaatConfig(Map> configMap) { if (configMap != null && configMap.size() > 0) { for (Integer redisDBIndex : configMap.keySet()) { - if (redisDBIndex >= 0 && redisDBIndex <= 15) { + if (redisDBIndex >= 0 && redisDBIndex < Configurations.getIntProperty("maxRedisDBIndex", 6)) { RedisTemplate redisTemplate = SpringContextHolder .getBean("redisTemplate" + redisDBIndex); String maatVersionStr = redisTemplate.opsForValue().get("MAAT_VERSION"); @@ -316,73 +216,101 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { for (MaatConfig maatConfig : maatConfigList) { int service = maatConfig.getService(); MaatXmlConfig maatXmlConfig = ReadMaatXmlUtil.getMaatConfigByService(service); - setConfig(maatConfig, maatXmlConfig, maatVersion, service, redisTemplate); + setConfig(maatConfig, maatXmlConfig, maatVersion, service, redisTemplate, redisDBIndex); } } } redisTemplate.boundValueOps("MAAT_VERSION").increment(1l); + logger.info("向{}号redis数据库更新了MAAT_VERSION,更新后版本是{}", redisDBIndex, + Integer.valueOf(maatVersionStr) + 1); } } -// addMaatRelation(configMap); + addMaatRelation(configMap); } } + /** + * 将编译,分组,域等配置拆开分别添加到redis中 + * @param maatConfig + * @param maatXmlConfig + * @param maatVersion + * @param service + * @param redisTemplate + * @param redisDBIndex + */ public void setConfig(MaatConfig maatConfig, MaatXmlConfig maatXmlConfig, Long maatVersion, int service, - RedisTemplate redisTemplate) { + RedisTemplate redisTemplate, Integer redisDBIndex) { Map compileMap = maatConfig.getCompileMap(); - setCommonConfig(maatXmlConfig, compileMap, 10, maatVersion.doubleValue(), service, redisTemplate);// 10代表是编译配置 + setCommonConfig(maatXmlConfig, compileMap, 10, maatVersion.doubleValue(), service, redisTemplate, redisDBIndex);// 10代表是编译配置 List> groupMapList = maatConfig.getGroupMapList(); if (groupMapList != null && groupMapList.size() > 0) { for (Map map : groupMapList) { - setCommonConfig(maatXmlConfig, map, 11, maatVersion.doubleValue(), service, redisTemplate);// 11代表是分组配置 + setCommonConfig(maatXmlConfig, map, 11, maatVersion.doubleValue(), service, redisTemplate, + redisDBIndex);// 11代表是分组配置 } } List> ipRegionMapList = maatConfig.getIpRegionMapList(); if (ipRegionMapList != null && ipRegionMapList.size() > 0) { for (Map map : ipRegionMapList) { - setCommonConfig(maatXmlConfig, map, 12, maatVersion.doubleValue(), service, redisTemplate);// 12代表是ip类域配置 + setCommonConfig(maatXmlConfig, map, 12, maatVersion.doubleValue(), service, redisTemplate, + redisDBIndex);// 12代表是ip类域配置 } } List> numRegionMapList = maatConfig.getNumRegionMapList(); if (numRegionMapList != null && numRegionMapList.size() > 0) { for (Map map : numRegionMapList) { - setCommonConfig(maatXmlConfig, map, 13, maatVersion.doubleValue(), service, redisTemplate);// 13代表是数值类配置 + setCommonConfig(maatXmlConfig, map, 13, maatVersion.doubleValue(), service, redisTemplate, + redisDBIndex);// 13代表是数值类配置 } } List> strRegionMapList = maatConfig.getStrRegionMapList(); if (strRegionMapList != null && strRegionMapList.size() > 0) { for (Map map : strRegionMapList) { - setCommonConfig(maatXmlConfig, map, 14, maatVersion.doubleValue(), service, redisTemplate);// 14代表是字符串类域配置 + setCommonConfig(maatXmlConfig, map, 14, maatVersion.doubleValue(), service, redisTemplate, + redisDBIndex);// 14代表是字符串类域配置 } } List> strStrRegionMapList = maatConfig.getStrStrRegionMapList(); if (strStrRegionMapList != null && strStrRegionMapList.size() > 0) { for (Map map : strStrRegionMapList) { - setCommonConfig(maatXmlConfig, map, 15, maatVersion.doubleValue(), service, redisTemplate);// 15代表是增强字符串类域配置 + setCommonConfig(maatXmlConfig, map, 15, maatVersion.doubleValue(), service, redisTemplate, + redisDBIndex);// 15代表是增强字符串类域配置 } } List> fileDigestRegionMapList = maatConfig.getFileDigestRegionMapList(); if (fileDigestRegionMapList != null && fileDigestRegionMapList.size() > 0) { for (Map map : fileDigestRegionMapList) { - setCommonConfig(maatXmlConfig, map, 16, maatVersion.doubleValue(), service, redisTemplate);// 16代表是文件摘要类域配置 + setCommonConfig(maatXmlConfig, map, 16, maatVersion.doubleValue(), service, redisTemplate, + redisDBIndex);// 16代表是文件摘要类域配置 } } List> fileLikeRegionMapList = maatConfig.getFileLikeRegionMapList(); if (fileLikeRegionMapList != null && fileLikeRegionMapList.size() > 0) { for (Map map : fileLikeRegionMapList) { - setCommonConfig(maatXmlConfig, map, 17, maatVersion.doubleValue(), service, redisTemplate);// 17代表是文本相似性域配置 + setCommonConfig(maatXmlConfig, map, 17, maatVersion.doubleValue(), service, redisTemplate, + redisDBIndex);// 17代表是文本相似性域配置 } } // updateCommonKey(maatXmlConfig); } + /** + * 将整理好的数据添加到redis中 + * @param maatXmlConfig + * @param map + * @param type + * @param maatVersion + * @param service + * @param redisTemplate + * @param redisDBIndex + */ public void setCommonConfig(MaatXmlConfig maatXmlConfig, Map map, int type, Double maatVersion, - int service, RedisTemplate redisTemplate) { + int service, RedisTemplate redisTemplate, Integer redisDBIndex) { if (maatXmlConfig != null && map != null && map.size() > 0) { List expressionList = maatXmlConfig.getExpressionList(); - String maatKey = ""; + String maatKey = null; for (MaatXmlExpr maatXmlExpr : expressionList) { if (type == maatXmlExpr.getType().intValue()) { StringBuffer keyBF = new StringBuffer(); @@ -416,9 +344,10 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } } maatKey = keyBF.toString(); - System.out.println(keyBF.toString()); - System.out.println(valBF.toString()); redisTemplate.opsForValue().set(maatKey.toUpperCase(), valBF.toString()); + logger.info("向{}号redis数据库添加了一条配置,key是{},value是{}", redisDBIndex, maatKey.toUpperCase(), + valBF.toString()); + // redisTemplate.boundValueOps(keyBF.toString()).set(valBF.toString()); break; } @@ -426,19 +355,27 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } for (MaatXmlExpr maatXmlExpr : expressionList) { if (maatXmlExpr.getKeyExpression().toUpperCase().equals("MAAT_UPDATE_STATUS")) { - String zset = maatKey.replace("EFFECTIVE_RULE:", "ADD,"); - redisTemplate.boundZSetOps("MAAT_UPDATE_STATUS").add(zset, maatVersion); + if (maatKey != null) { + String zset = maatKey.replace("EFFECTIVE_RULE:", "ADD,"); + redisTemplate.boundZSetOps("MAAT_UPDATE_STATUS").add(zset, maatVersion); + logger.info("向{}号redis数据库更新了MAAT_UPDATE_STATUS,内容是{},SCORES是{}", redisDBIndex, + zset.toUpperCase(), maatVersion); + } } else if (maatXmlExpr.getKeyExpression().toUpperCase().equals("MAAT_RULE_TIMER")) { - Double score = 0d;// 界面下发的配置没有超时时间所以这里设置为0 - redisTemplate.boundZSetOps("MAAT_RULE_TIMER").add(maatKey, score); + if (maatKey != null) { + Double score = 0d;// 界面下发的配置没有超时时间所以这里设置为0 + redisTemplate.boundZSetOps("MAAT_RULE_TIMER").add(maatKey, score); + logger.info("向{}号redis数据库更新了MAAT_RULE_TIMER,内容是{},SCORES是{}", redisDBIndex, maatKey, score); + + } } else if (maatXmlExpr.getKeyExpression().toUpperCase().equals("MAAT_VERSION_TIMER")) { Long nowTime = new Date().getTime(); nowTime = nowTime / 1000l; Double score = nowTime.doubleValue();// 使用redis自带的time,得到当前时间的秒 redisTemplate.boundZSetOps("MAAT_VERSION_TIMER").add(maatVersion + "", score); + logger.info("向{}号redis数据库更新了MAAT_VERSION_TIMER,内容是{},SCORES是{}", redisDBIndex, maatVersion, score); } } - } } @@ -457,7 +394,9 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { public Long getIncrId(String key) { RedisTemplate redisTemplate = SpringContextHolder.getBean("redisTemplate0"); - return redisTemplate.boundValueOps(key.toUpperCase()).increment(1l); + Long id = redisTemplate.boundValueOps(key.toUpperCase()).increment(1l); + logger.info("从0号redis数据库获取{}成功,自增后的值是{}", key, id); + return id; } @Override @@ -482,7 +421,7 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { MaatXmlConfig maatXmlConfig = ReadMaatXmlUtil.getMaatConfigByService(service); if (maatXmlConfig != null) { List expressionList = maatXmlConfig.getExpressionList(); - String maatKey = ""; + String maatKey = null; for (MaatXmlExpr maatXmlExpr : expressionList) { if (0 == maatXmlExpr.getType().intValue()) { StringBuffer keyBF = new StringBuffer(); @@ -504,6 +443,9 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { String oldKey = maatKey.replace("OBSOLETE_RULE", "EFFECTIVE_RULE"); redisTemplate.rename(oldKey.toString().toUpperCase(), keyBF.toString().toUpperCase()); + logger.info("向{}号redis数据库修改了一条配置,修改前key是{},修改后key是{}", redisDBIndex, + oldKey.toString().toUpperCase(), + keyBF.toString().toUpperCase()); break; } // redisTemplate.boundValueOps(keyBF.toString().toUpperCase()).set(valBF.toString()); @@ -512,12 +454,21 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { for (MaatXmlExpr maatXmlExpr : expressionList) { if (maatXmlExpr.getKeyExpression().toUpperCase() .equals("MAAT_UPDATE_STATUS")) { - String zset = maatKey.replace("OBSOLETE_RULE:", "DEL,"); - redisTemplate.boundZSetOps("MAAT_UPDATE_STATUS").add(zset, maatVersion); + if (maatKey != null) { + String zset = maatKey.replace("OBSOLETE_RULE:", "DEL,"); + redisTemplate.boundZSetOps("MAAT_UPDATE_STATUS").add(zset, + maatVersion); + logger.info("向{}号redis数据库更新了MAAT_UPDATE_STATUS,内容是{},SCORES是{}", + redisDBIndex, zset.toUpperCase(), maatVersion); + } } else if (maatXmlExpr.getKeyExpression().toUpperCase() .equals("MAAT_RULE_TIMER")) { - Double score = 0d;// 界面下发的配置没有超时时间所以这里设置为0 - redisTemplate.boundZSetOps("MAAT_RULE_TIMER").add(maatKey, score); + if (maatKey != null) { + Double score = 0d;// 界面下发的配置没有超时时间所以这里设置为0 + redisTemplate.boundZSetOps("MAAT_RULE_TIMER").add(maatKey, score); + logger.info("向{}号redis数据库更新了MAAT_RULE_TIMER,内容是{},SCORES是{}", + redisDBIndex, maatKey, score); + } } else if (maatXmlExpr.getKeyExpression().toUpperCase() .equals("MAAT_VERSION_TIMER")) { Long nowTime = new Date().getTime(); @@ -525,6 +476,8 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { Double score = nowTime.doubleValue();// 使用redis自带的time,得到当前时间的秒 redisTemplate.boundZSetOps("MAAT_VERSION_TIMER").add(maatVersion + "", score); + logger.info("向{}号redis数据库更新了MAAT_VERSION_TIMER,内容是{},SCORES是{}", + redisDBIndex, maatVersion, score); } } List seqList = maatXmlConfig.getSequenceList(); @@ -542,11 +495,11 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } } } - } - } redisTemplate.boundValueOps("MAAT_VERSION").increment(1l); + logger.info("向{}号redis数据库更新了MAAT_VERSION,更新后版本是{}", redisDBIndex, + Integer.valueOf(maatVersionStr) + 1); } } @@ -574,11 +527,13 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { Long maatVersion = Long.valueOf(maatVersionStr) + 1; for (Integer service : serviceConfigMap.keySet()) { MaatXmlConfig maatXmlConfig = ReadMaatXmlUtil.getMaatConfigByService(service); - setConfig(serviceConfigMap.get(service), maatXmlConfig, maatVersion, service, redisTemplate, - maatRelation); + removeConfig(serviceConfigMap.get(service), maatXmlConfig, maatVersion, service, + redisTemplate, maatRelation, redisDBIndex); } redisTemplate.boundValueOps("MAAT_VERSION").increment(1l); + logger.info("向{}号redis数据库更新了MAAT_VERSION,更新后版本是{}", redisDBIndex, + Integer.valueOf(maatVersionStr) + 1); } } } @@ -588,31 +543,42 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } - public void setConfig(List idList, MaatXmlConfig maatXmlConfig, Long maatVersion, int service, - RedisTemplate redisTemplate, MaatRelation maatRelation) { + /** + * 删除maat类配置 + * @param idList 配置id集合 + * @param maatXmlConfig maat.xml中关于当前业务类型的key和value写法的对象 + * @param maatVersion 版本号 + * @param service 业务类型 + * @param redisTemplate + * @param maatRelation id对应关系对象 + */ + private void removeConfig(List idList, MaatXmlConfig maatXmlConfig, Long maatVersion, int service, + RedisTemplate redisTemplate, MaatRelation maatRelation, int redisDBIndex) { if (maatRelation != null && idList != null && idList.size() > 0 && maatXmlConfig != null) { for (Long id : idList) { Set compileIdList = new HashSet(); compileIdList.add(id); - setCommonConfig(maatXmlConfig, compileIdList, 10, maatVersion.doubleValue(), service, redisTemplate);// 10代表是编译配置 + removeCommonConfig(maatXmlConfig, compileIdList, 10, maatVersion.doubleValue(), service, redisTemplate, + redisDBIndex);// 10代表是编译配置 Set groupSet = maatRelation.getCompileAndGroupMap().get(id); if (groupSet != null && groupSet.size() > 0) { - setCommonConfig(maatXmlConfig, groupSet, 11, maatVersion.doubleValue(), service, redisTemplate);// 11代表是分组配置 + removeCommonConfig(maatXmlConfig, groupSet, 11, maatVersion.doubleValue(), service, redisTemplate, + redisDBIndex);// 11代表是分组配置 for (Long groupId : groupSet) { Set regionIdSet = maatRelation.getGroupAndRegionMap().get(groupId); if (regionIdSet != null && regionIdSet.size() > 0) { - setCommonConfig(maatXmlConfig, regionIdSet, 12, maatVersion.doubleValue(), service, - redisTemplate);// 12代表是ip类域配置 - setCommonConfig(maatXmlConfig, regionIdSet, 13, maatVersion.doubleValue(), service, - redisTemplate);// 13代表是数值类配置 - setCommonConfig(maatXmlConfig, regionIdSet, 14, maatVersion.doubleValue(), service, - redisTemplate);// 14代表是字符串类域配置 - setCommonConfig(maatXmlConfig, regionIdSet, 15, maatVersion.doubleValue(), service, - redisTemplate);// 15代表是增强字符串类域配置 - setCommonConfig(maatXmlConfig, regionIdSet, 16, maatVersion.doubleValue(), service, - redisTemplate);// 16代表是文件摘要类域配置 - setCommonConfig(maatXmlConfig, regionIdSet, 17, maatVersion.doubleValue(), service, - redisTemplate);// 17代表是文本相似性域配置 + removeCommonConfig(maatXmlConfig, regionIdSet, 12, maatVersion.doubleValue(), service, + redisTemplate, redisDBIndex);// 12代表是ip类域配置 + removeCommonConfig(maatXmlConfig, regionIdSet, 13, maatVersion.doubleValue(), service, + redisTemplate, redisDBIndex);// 13代表是数值类配置 + removeCommonConfig(maatXmlConfig, regionIdSet, 14, maatVersion.doubleValue(), service, + redisTemplate, redisDBIndex);// 14代表是字符串类域配置 + removeCommonConfig(maatXmlConfig, regionIdSet, 15, maatVersion.doubleValue(), service, + redisTemplate, redisDBIndex);// 15代表是增强字符串类域配置 + removeCommonConfig(maatXmlConfig, regionIdSet, 16, maatVersion.doubleValue(), service, + redisTemplate, redisDBIndex);// 16代表是文件摘要类域配置 + removeCommonConfig(maatXmlConfig, regionIdSet, 17, maatVersion.doubleValue(), service, + redisTemplate, redisDBIndex);// 17代表是文本相似性域配置 } } } @@ -620,8 +586,17 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } } - public void setCommonConfig(MaatXmlConfig maatXmlConfig, Set idList, int type, Double maatVersion, - int service, RedisTemplate redisTemplate) { + /** + * 删除maat配置时,对redis进行相关操作,主要是重命名key和记录相关状态 + * @param maatXmlConfig + * @param idList + * @param type + * @param maatVersion + * @param service + * @param redisTemplate + */ + public void removeCommonConfig(MaatXmlConfig maatXmlConfig, Set idList, int type, Double maatVersion, + int service, RedisTemplate redisTemplate, int redisDBIndex) { if (maatXmlConfig != null && idList != null && idList.size() > 0) { List expressionList = maatXmlConfig.getExpressionList(); String maatKey = null; @@ -647,6 +622,8 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { String oldKey = keyBF.toString().toUpperCase(); maatKey = oldKey.replace("EFFECTIVE_RULE", "OBSOLETE_RULE"); redisTemplate.rename(oldKey, maatKey.toUpperCase()); + logger.info("向{}号redis数据库修改了一条配置,修改前key是{},修改后key是{}", redisDBIndex, oldKey, + maatKey.toUpperCase()); break; } } @@ -655,6 +632,10 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { if (maatKey != null) { String zset = maatKey.replace("OBSOLETE_RULE:", "DEL,"); redisTemplate.boundZSetOps("MAAT_UPDATE_STATUS").add(zset, maatVersion); + + logger.info("向{}号redis数据库更新了MAAT_UPDATE_STATUS,内容是{},SCORES是{}", redisDBIndex, + zset.toUpperCase(), maatVersion); + } } else if (maatXmlExpr.getKeyExpression().toUpperCase().equals("MAAT_RULE_TIMER")) { @@ -662,23 +643,31 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { Double score = 0d;// 界面下发的配置没有超时时间所以这里设置为0 redisTemplate.boundZSetOps("MAAT_RULE_TIMER").add(maatKey, score); + logger.info("向{}号redis数据库更新了MAAT_RULE_TIMER,内容是{},SCORES是{}", redisDBIndex, maatKey, score); + } } else if (maatXmlExpr.getKeyExpression().toUpperCase().equals("MAAT_VERSION_TIMER")) { Long nowTime = new Date().getTime(); nowTime = nowTime / 1000l; Double score = nowTime.doubleValue();// 使用redis自带的time,得到当前时间的秒 redisTemplate.boundZSetOps("MAAT_VERSION_TIMER").add(maatVersion + "", score); + logger.info("向{}号redis数据库更新了MAAT_VERSION_TIMER,内容是{},SCORES是{}", redisDBIndex, maatVersion, + score); + } } } } } - @Override + /** + * 删除配置成功后,需要更新编译,组,域等配置id的对应关系 + * @param idMap + */ public void delMaatRelation(Map>> idMap) { if (idMap != null && idMap.size() > 0) { for (Integer redisDBIndex : idMap.keySet()) { - if (redisDBIndex >= 0 && redisDBIndex <= 15) { + if (redisDBIndex >= 0 && redisDBIndex < Configurations.getIntProperty("maxRedisDBIndex", 6)) { // MaatRelation maatRelation = // CompileGroupRegionRela.getIdRelationMap().get(redisDBIndex); Map> map = idMap.get(redisDBIndex); @@ -697,24 +686,4 @@ public class ConfigRedisServiceimpl implements ConfigRedisService { } } - public void delMaatRelationOld(Map>> idMap) { - if (idMap != null && idMap.size() > 0) { - for (Integer redisDBIndex : idMap.keySet()) { - if (redisDBIndex >= 0 && redisDBIndex <= 15) { - MaatRelation maatRelation = CompileGroupRegionRela.getIdRelationMap().get(redisDBIndex); - Map> map = idMap.get(redisDBIndex); - if (map != null && map.size() > 0) { - for (Integer service : map.keySet()) { - List idList = map.get(service); - if (idList != null && idList.size() > 0) { - for (Long compileId : idList) { - // CompileGroupRegionRela.removKey(maatRelation, compileId); - } - } - } - } - } - } - } - } } diff --git a/src/main/resources/nis.properties b/src/main/resources/nis.properties index d2f383f..8c7ff97 100644 --- a/src/main/resources/nis.properties +++ b/src/main/resources/nis.properties @@ -240,4 +240,10 @@ maxPageSize=100000 isDebug=true #文件摘要获取工具目录 -digest.gen.tool.path=maat-redis/digest_gen \ No newline at end of file +digest.gen.tool.path=maat-redis/digest_gen + + + + +##redis中有多少个数据库 +maxRedisDBIndex=6 \ No newline at end of file