Browse Source

使用hashTag

supeng 3 weeks ago
parent
commit
f1e7abcb6e

+ 4 - 2
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/RedisKeyConstants.java

@@ -8,8 +8,10 @@ public class RedisKeyConstants {
     public static class Recommend {
         public static String riskUserMid = "risk:user:mid";
         public static String riskUserUid = "risk:user:uid";
-
-        public static final String WECHAT_RISK_VIDEO_CACHE_KEY = "wechat:risk:video:set";
+        /**
+         * 使用hashTag {?}
+         */
+        public static final String WECHAT_RISK_VIDEO_CACHE_KEY = "{wechat:risk:video}:set";
     }
 
     public static class DouHot {

+ 3 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/xxl/RickVideoCacheJob.java

@@ -41,7 +41,7 @@ public class RickVideoCacheJob {
     @Autowired
     private RedisTemplate<String, String> redisTemplate;
 
-    private static final String TEMP = "temp:";
+    private static final String TEMP = ":temp:";
 
     @XxlJob("updateRiskVideoCacheHandler")
     public ReturnT<String> updateRiskVideoCacheHandler(String params) {
@@ -74,8 +74,8 @@ public class RickVideoCacheJob {
                 redisTemplate.delete(RedisKeyConstants.Recommend.WECHAT_RISK_VIDEO_CACHE_KEY);
                 return ReturnT.SUCCESS;
             }
-            //需要保证原子性;由于数据量可能较大,不使用lua,采用临时key重命名方式
-            String tempKey = TEMP + RedisKeyConstants.Recommend.WECHAT_RISK_VIDEO_CACHE_KEY + System.currentTimeMillis();
+            //需要保证原子性;由于数据量可能较大,不使用lua,采用临时key重命名方式;使用hashtag,保证rename在一个slot
+            String tempKey = RedisKeyConstants.Recommend.WECHAT_RISK_VIDEO_CACHE_KEY + TEMP + System.currentTimeMillis();
             redisTemplate.opsForSet().add(tempKey, videoSet.toArray(new String[0]));
             redisTemplate.rename(tempKey, RedisKeyConstants.Recommend.WECHAT_RISK_VIDEO_CACHE_KEY);
             XxlJobLogger.log("rename tempKey = {} newKey = {} finish", tempKey, RedisKeyConstants.Recommend.WECHAT_RISK_VIDEO_CACHE_KEY);