Преглед на файлове

feat:调试热点宝供给

zhaohaipeng преди 1 седмица
родител
ревизия
d6f1bf4d43

+ 4 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/flowpool/FlowPoolService.java

@@ -156,13 +156,13 @@ public class FlowPoolService {
             return;
         }
         pool.execute(() -> {
-            List<Long> needRemoveVideoIds = new ArrayList<>();
+            List<String> needRemoveVideoIds = new ArrayList<>();
             for (Video video : videos) {
                 String distributeKey = String.format(RedisKeyConstants.DouHot.LOCAL_DISTRIBUTE_KEY_FORMAT, video.getVideoId(), video.getFlowPool());
                 Long count = redisTemplate.opsForValue().decrement(distributeKey);
                 if (Objects.isNull(count) || count <= 0) {
                     redisTemplate.delete(distributeKey);
-                    needRemoveVideoIds.add(video.getVideoId());
+                    needRemoveVideoIds.add(String.format("%d-%s", video.getVideoId(), video.getFlowPool()));
                 }
             }
             if (CollectionUtils.isEmpty(needRemoveVideoIds)) {
@@ -171,7 +171,8 @@ public class FlowPoolService {
 
             // 从流量池缓存中移除达到分发次数限制的视频ID
             String itemKey = String.format(RedisKeyConstants.DouHot.ITEM_REDIS_KEY_FORMAT, province, "1");
-            redisTemplate.opsForSet().remove(itemKey, needRemoveVideoIds);
+            log.info("[DouHot view distribute count remove cache] key: {}, item: {}", itemKey, needRemoveVideoIds);
+            redisTemplate.opsForSet().remove(itemKey, needRemoveVideoIds.toArray());
         });
     }
 

+ 1 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java

@@ -125,6 +125,7 @@ public class RecallService implements ApplicationContextAware {
         if (!param.isRiskUser()) {
             strategies.add(strategyMap.get(QuickFlowPoolWithLevelRecallStrategy.class.getSimpleName()));
             strategies.add(strategyMap.get(FlowPoolWithLevelRecallStrategyTomson.class.getSimpleName()));
+            strategies.add(strategyMap.get(DouHotFlowPoolRecallStrategy.class.getSimpleName()));
         }
         return strategies;
     }

+ 7 - 4
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/DouHotFlowPoolRecallStrategy.java

@@ -3,6 +3,7 @@ package com.tzld.piaoquan.recommend.server.service.recall.strategy;
 import com.tzld.piaoquan.recommend.server.common.RedisKeyConstants;
 import com.tzld.piaoquan.recommend.server.model.Video;
 import com.tzld.piaoquan.recommend.server.service.filter.FilterParam;
+import com.tzld.piaoquan.recommend.server.service.filter.FilterResult;
 import com.tzld.piaoquan.recommend.server.service.filter.FilterService;
 import com.tzld.piaoquan.recommend.server.service.recall.FilterParamFactory;
 import com.tzld.piaoquan.recommend.server.service.recall.RecallParam;
@@ -58,12 +59,14 @@ public class DouHotFlowPoolRecallStrategy implements RecallStrategy {
         }
 
         FilterParam filterParam = FilterParamFactory.create(param, new ArrayList<>(videoIdAndFlowPoolMap.keySet()));
-        filterService.filter(filterParam);
+        FilterResult filterResult = filterService.filter(filterParam);
+
         // 对视频随机打断
-        Collections.shuffle(filterParam.getVideoIds());
+        Collections.shuffle(filterResult.getVideoIds());
 
-        int size = Math.min(filterParam.getVideoIds().size(), douHotRecallVideoCnt);
-        List<Long> subList = filterParam.getVideoIds().subList(0, size);
+        // 截取前20个
+        int size = Math.min(filterResult.getVideoIds().size(), douHotRecallVideoCnt);
+        List<Long> subList = filterResult.getVideoIds().subList(0, size);
         List<Video> videos = new ArrayList<>(subList.size());
         for (Long videoId : subList) {
             Video video = new Video();