|
|
@@ -30,10 +30,6 @@ public class VideoTask {
|
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
private static final String YL_SECRET_ID = "AKIDiMq9lDf2EOM9lIfqqfKo7FNgM5meD0sT";
|
|
|
private static final String YL_SECRET_KEY = "u5SuS80342xzx8FRBukza9lVNHKNMSaB";
|
|
|
- private static final String LIKE_KEY_PREFIX = "like:video:";
|
|
|
- private static final String UNLIKE_KEY_PREFIX = "unlike:video:";
|
|
|
- private static final String FAVORITE_KEY_PREFIX = "favorite:video:";
|
|
|
- private static final String NO_FAVORITE_KEY_PREFIX = "nofavorite:video:";
|
|
|
private static final String COMMENT_KEY_PREFIX = "comment:video:";
|
|
|
private static final String COMMENT_REPLY_COUNT_KEY_PATTERN = "reply:count:comment:*";
|
|
|
@Autowired
|
|
|
@@ -68,86 +64,36 @@ public class VideoTask {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //同步点赞到数据库
|
|
|
+ /**
|
|
|
+ * 同步点赞到数据库。
|
|
|
+ * 已停用全库 SCAN:点赞/收藏现已实时写库,定时任务再扫 Redis 只会徒增 CPU。
|
|
|
+ */
|
|
|
public void syncLikesToDatabase() {
|
|
|
- Collection<String> keys = redisCache.scanKeys(LIKE_KEY_PREFIX + "*:user:*");
|
|
|
- if (keys != null && !keys.isEmpty()) {
|
|
|
- for (String key : keys) {
|
|
|
- String[] parts = key.split(":");
|
|
|
- Long videoId = Long.parseLong(parts[2]);
|
|
|
- long userId = Long.parseLong(parts[4]);
|
|
|
- //判断是否存在数据库
|
|
|
- int check = videoLikeMapper.checkLike(videoId, userId);
|
|
|
- if (check==0){
|
|
|
- FsUserVideoLike map=new FsUserVideoLike();
|
|
|
- map.setVideoId(videoId);
|
|
|
- map.setUserId(userId);
|
|
|
- map.setCreateTime(new Date());
|
|
|
- videoLikeMapper.insertFsUserVideoLike(map);
|
|
|
- }
|
|
|
- //删除key
|
|
|
- redisCache.deleteObject(key);
|
|
|
- }
|
|
|
- }
|
|
|
+ logger.debug("syncLikesToDatabase skipped: like is persisted on request");
|
|
|
}
|
|
|
|
|
|
- //同步取消点赞到数据库
|
|
|
+ /**
|
|
|
+ * 同步取消点赞到数据库。
|
|
|
+ * 已停用:业务不再写入 unlike:video:* 键。
|
|
|
+ */
|
|
|
public void syncUnlikesToDatabase() {
|
|
|
- Collection<String> keys = redisCache.scanKeys(UNLIKE_KEY_PREFIX + "*:user:*");
|
|
|
- if (keys != null && !keys.isEmpty()) {
|
|
|
- for (String key : keys) {
|
|
|
- String[] parts = key.split(":");
|
|
|
- Long videoId = Long.parseLong(parts[2]);
|
|
|
- long userId = Long.parseLong(parts[4]);
|
|
|
-
|
|
|
- // 从数据库中删除点赞记录
|
|
|
- videoLikeMapper.deleteLike(videoId, userId);
|
|
|
-
|
|
|
- // 从Redis中删除记录
|
|
|
- redisCache.deleteObject(key);
|
|
|
- }
|
|
|
- }
|
|
|
+ logger.debug("syncUnlikesToDatabase skipped: unlike key is no longer used");
|
|
|
}
|
|
|
|
|
|
- //同步收藏到数据库
|
|
|
+ /**
|
|
|
+ * 同步收藏到数据库。
|
|
|
+ * 已停用全库 SCAN:收藏操作现已实时写库。
|
|
|
+ */
|
|
|
public void syncFavoritesToDatabase() {
|
|
|
- Collection<String> keys = redisCache.scanKeys(FAVORITE_KEY_PREFIX + "*:user:*");
|
|
|
- if (keys != null && !keys.isEmpty()) {
|
|
|
- for (String key : keys) {
|
|
|
- String[] parts = key.split(":");
|
|
|
- Long videoId = Long.parseLong(parts[2]);
|
|
|
- long userId = Long.parseLong(parts[4]);
|
|
|
- //判断是否存在数据库
|
|
|
- int check = videoFavoriteMapper.checkFavorite(videoId, userId);
|
|
|
- if (check==0){
|
|
|
- FsUserVideoFavorite map=new FsUserVideoFavorite();
|
|
|
- map.setVideoId(videoId);
|
|
|
- map.setUserId(userId);
|
|
|
- map.setCreateTime(new Date());
|
|
|
- videoFavoriteMapper.insertFsUserVideoFavorite(map);
|
|
|
- }
|
|
|
- //删除key
|
|
|
- redisCache.deleteObject(key);
|
|
|
- }
|
|
|
- }
|
|
|
+ logger.debug("syncFavoritesToDatabase skipped: favorite is persisted on request");
|
|
|
}
|
|
|
|
|
|
- //同步取消收藏到数据库
|
|
|
+ /**
|
|
|
+ * 同步取消收藏到数据库。
|
|
|
+ * 已停用:业务不再写入 nofavorite:video:* 键。
|
|
|
+ */
|
|
|
public void syncUnFavoritesToDatabase() {
|
|
|
- Collection<String> keys = redisCache.scanKeys(NO_FAVORITE_KEY_PREFIX + "*:user:*");
|
|
|
- if (keys != null && !keys.isEmpty()) {
|
|
|
- for (String key : keys) {
|
|
|
- String[] parts = key.split(":");
|
|
|
- Long videoId = Long.parseLong(parts[2]);
|
|
|
- long userId = Long.parseLong(parts[4]);
|
|
|
-
|
|
|
- // 从数据库中删除点赞记录
|
|
|
- videoFavoriteMapper.deleteFavorite(videoId, userId);
|
|
|
-
|
|
|
- // 从Redis中删除记录
|
|
|
- redisCache.deleteObject(key);
|
|
|
- }
|
|
|
- }
|
|
|
+ logger.debug("syncUnFavoritesToDatabase skipped: nofavorite key is no longer used");
|
|
|
}
|
|
|
|
|
|
//同步评论数量
|