首页 > 解决方案 > 每 5 小时更新一次 Spring Boot 缓存

问题描述

要求:每 5 小时使用一些数据更新缓存

调度程序类

@Component
public class SomeCacheDataUpdateScheduler{


    @Autowired
    DataFeignClient feignClient;

    @Autowired
    private CacheManager cacheManager;


    @Scheduled(fixedDelay = 2000)
    public void run()  {
        List<SomeObject> objList=feignClient.findAllData();


        objList.forEach(obj->cacheManager.getCache("cache-name").put(obj.getId(), obj));
    }

}

缓存管理器配置类

@Configuration
public class CacheConfig{

    @Bean
    public CacheManager cacheManager() {
        return new ConcurrentMapCacheManager("cache-name");
    }

}

现在,在调试时,我知道“feignClient.findAllData();” 正在返回所需的对象。但不知何故,缓存没有被填充。当我使用有效键从缓存地图中获取特定值时,它返回空值。

SomeObject sObj=cacheManager.getCache("cache-name").get("203",SomeObject.class);

上面的调用是在运行调度程序之后进行的。

我对 Spring Boot 的缓存机制完全陌生,对此问题的任何帮助以及缓存的最佳实践将不胜感激!

标签: javaspring-bootcachingnetflix-feign

解决方案


推荐阅读