diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/homeV2/HomeV2Service.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/homeV2/HomeV2Service.java index 19c643efb..980cfdaba 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/homeV2/HomeV2Service.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/homeV2/HomeV2Service.java @@ -239,4 +239,27 @@ public class HomeV2Service { return result; } + public void clearPartitionPoolSet(Integer partitionId){ + Set homeRoomSet = poolService.getPartitionMap(partitionId).readAllKeySet(); + if (CollectionUtils.isEmpty(homeRoomSet)){ + return; + } + + String[] uidArray = homeRoomSet.stream().map(Objects::toString).toArray(String[]::new); + List cacheList = jedisService.hmread(RedisKey.room_mic_up.getKey(), uidArray); + if (CollectionUtils.isEmpty(cacheList)){ + poolService.getPartitionMap(partitionId).clear(); + return ; + } + + Set micRoomSet = cacheList.stream().map(Long::parseLong).collect(Collectors.toSet()); + homeRoomSet.removeAll(micRoomSet); + if (CollectionUtils.isEmpty(homeRoomSet)){ + return; + } + + Long[] emptyRoomList = homeRoomSet.toArray(Long[]::new); + poolService.getPartitionMap(partitionId).fastRemove(emptyRoomList); + } + } diff --git a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/HomeV2ListTask.java b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/HomeV2ListTask.java new file mode 100644 index 000000000..83671621d --- /dev/null +++ b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/HomeV2ListTask.java @@ -0,0 +1,27 @@ +package com.accompany.scheduler.task; + +import com.accompany.business.service.homeV2.HomeV2Service; +import com.accompany.core.enumeration.PartitionEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class HomeV2ListTask { + + @Autowired + private HomeV2Service homeV2Service; + + /** + * 缓存当前有效的表情JSON + */ + @Scheduled(cron = "0 */6 * * * ?") + public void cacheFaceJson() { + for (PartitionEnum partitionEnum : PartitionEnum.values()) { + homeV2Service.clearPartitionPoolSet(partitionEnum.getId()); + } + } + +}