Browse Source

标签查询,缓存的补偿机制修改

dev_shibei_match
wangchao 5 years ago
parent
commit
f9a2d24239
  1. 14
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java
  2. 1
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml

14
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java

@ -27,7 +27,6 @@ import com.epmet.dto.result.IssueCategoryTagResultDTO;
import com.epmet.entity.IssueProjectCategoryDictEntity; import com.epmet.entity.IssueProjectCategoryDictEntity;
import com.epmet.entity.IssueProjectTagDictEntity; import com.epmet.entity.IssueProjectTagDictEntity;
import com.epmet.utils.ModuleConstants; import com.epmet.utils.ModuleConstants;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -107,14 +106,14 @@ public class IssueProjectTagDictRedis {
//如果keys集合为空,说明缓存中没有当前客户的标签排行信息,直接进行补偿 //如果keys集合为空,说明缓存中没有当前客户的标签排行信息,直接进行补偿
Set<ZSetOperations.TypedTuple<Object>> customizedTuples = redisUtils.zReverseRangeWithScores(GovIssueRedisKeys.getGovernmentTagKey(customerId, null), NumConstant.ZERO_L, (long) (NumConstant.ONE_NEG)); Set<ZSetOperations.TypedTuple<Object>> customizedTuples = redisUtils.zReverseRangeWithScores(GovIssueRedisKeys.getGovernmentTagKey(customerId, ModuleConstants.CUSTOMIZED_TAG_CATEGORY_NAME), NumConstant.ZERO_L, (long) (NumConstant.ONE_NEG));
if(!CollectionUtils.isEmpty(customizedTuples)){ if(!CollectionUtils.isEmpty(customizedTuples)){
Map<Double, List<IssueCategoryTagResultDTO>> customizedHeatMap = new HashMap<>(); Map<Double, List<IssueCategoryTagResultDTO>> customizedHeatMap = new HashMap<>();
customizedTuples.forEach(tuple -> { customizedTuples.forEach(tuple -> {
List<IssueCategoryTagResultDTO> queue = customizedHeatMap.get(tuple.getValue()); List<IssueCategoryTagResultDTO> queue = customizedHeatMap.get(tuple.getScore());
if((CollectionUtils.isEmpty(queue))) queue = new LinkedList<>(); if((CollectionUtils.isEmpty(queue))) queue = new LinkedList<>();
queue.add(parseObject(tuple.getValue(), IssueCategoryTagResultDTO.class)); queue.add(parseObject(tuple.getValue(), IssueCategoryTagResultDTO.class));
customizedHeatMap.put((Double) tuple.getValue(),queue); customizedHeatMap.put(tuple.getScore(),queue);
}); });
List<IssueCategoryTagResultDTO> customizedResult = new LinkedList<>(); List<IssueCategoryTagResultDTO> customizedResult = new LinkedList<>();
customizedHeatMap.keySet().stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()).forEach(count -> { customizedHeatMap.keySet().stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()).forEach(count -> {
@ -123,7 +122,10 @@ public class IssueProjectTagDictRedis {
result.put(ModuleConstants.CUSTOMIZED_TAG_CATEGORY_NAME,customizedResult); result.put(ModuleConstants.CUSTOMIZED_TAG_CATEGORY_NAME,customizedResult);
} }
if(!CollectionUtils.isEmpty(result)) //默认、自定义标签,只要有一个是空就触发补偿
//不信任缓存数据
if(!CollectionUtils.isEmpty(result) && !CollectionUtils.isEmpty(result.get(ModuleConstants.DEFAULT_TAG_CATEGORY_NAME))
&& !CollectionUtils.isEmpty(result.get(ModuleConstants.CUSTOMIZED_TAG_CATEGORY_NAME)))
return result; return result;
@ -285,7 +287,7 @@ public class IssueProjectTagDictRedis {
fulfilled.forEach((redisKey, map) -> { fulfilled.forEach((redisKey, map) -> {
map.forEach((score,list) -> { map.forEach((score,list) -> {
list.forEach(factor -> { list.forEach(factor -> {
connection.zSetCommands().zAdd(redisTemplate.getValueSerializer().serialize(redisKey), connection.zSetCommands().zAdd(redisTemplate.getKeySerializer().serialize(redisKey),
score.doubleValue(), score.doubleValue(),
redisTemplate.getValueSerializer().serialize(factor)); redisTemplate.getValueSerializer().serialize(factor));
}); });

1
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml

@ -78,6 +78,7 @@
(IFNULL(tag.ISSUE_USE_COUNT,0) + IFNULL(tag.PROJECT_USE_COUNT,0)) AS issueUseCount (IFNULL(tag.ISSUE_USE_COUNT,0) + IFNULL(tag.PROJECT_USE_COUNT,0)) AS issueUseCount
FROM FROM
ISSUE_PROJECT_TAG_DICT tag LEFT JOIN ISSUE_PROJECT_CATEGORY_DICT type ON tag.CATEGORY_ID = type.ID ISSUE_PROJECT_TAG_DICT tag LEFT JOIN ISSUE_PROJECT_CATEGORY_DICT type ON tag.CATEGORY_ID = type.ID
AND type.CUSTOMER_ID = #{customerId}
WHERE WHERE
tag.DEL_FLAG = '0' tag.DEL_FLAG = '0'
AND tag.CUSTOMER_ID = #{customerId} AND tag.CUSTOMER_ID = #{customerId}

Loading…
Cancel
Save