package com.gkhy.testFourierSpecialGasMonitor.schedule; import com.alibaba.fastjson.JSON; import com.gkhy.testFourierSpecialGasMonitor.entity.GasConcentration; import com.gkhy.testFourierSpecialGasMonitor.service.DataReceiveService; import org.redisson.api.RBucket; import org.redisson.api.RedissonClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; /** * @author Mr.huang * @decription * @date 2023/8/7 15:30 */ @Component public class GasConcentrationAutoCreateKeySchedule { @Autowired private RedissonClient redissonClient; @Autowired private DataReceiveService dataReceiveService; private final Logger logger = LoggerFactory.getLogger(this.getClass()); private static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static String gasConcentrationCachePrefix = "huatai:gas_concentration_cache_"; @Scheduled(cron = "0 0 0 * * ?") // 每天凌晨执行 @Async(value = "SocketTaskExecutor") public void createRedisKey() { LocalDateTime time = LocalDateTime.now(); String cacheName = time.format(formatter); List gasConcentrations = new ArrayList<>(); String jsonString = JSON.toJSONString(gasConcentrations); RBucket bucket = redissonClient.getBucket(gasConcentrationCachePrefix+cacheName); if (!bucket.isExists()) { bucket.set(jsonString, 25, TimeUnit.HOURS); } //try { // TimeUnit.SECONDS.sleep(3); //} catch (InterruptedException e) { // logger.info("自动清除历史气体对照表缓存key失败"); //} //清除前一天的缓存 //LocalDateTime yesterday = LocalDateTime.now().minusDays(1); //String yesterdayCache = yesterday.format(formatter); //RBucket yesterdayBucket = redissonClient.getBucket(gasConcentrationCachePrefix+yesterdayCache); //if (yesterdayBucket.isExists()) { // yesterdayBucket.delete(); //} } }