如何在spring boot中使用两个具有不同过期时间的缓存(redis后端)

时间:2015-10-17 14:00:28

标签: spring spring-boot spring-cache spring-data-redis

在我的spring boot(1.2.6)应用程序中,我需要针对不同对象的不同到期策略。缓存后端是redis。

归档它的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

我把它翻了出来,目前它现在有效。

最初我使用不同的过期时间创建了不同的缓存,但它不起作用。看起来像spring redis缓存不使用缓存实例中指定的过期时间。

无效

@Bean
public Cache cacheObjectName(StringRedisTemplate template) {
    return new RedisCache(CACHE_OBJNAME, CACHE_OBJNAME.getBytes(), template, 10 * 24 * 60 * 60);
}

最后,我不得不创建具有不同过期时间的不同缓存管理器,

工作实施

@Bean(name = MANAGER_NAME_1D)
public CacheManager cacheManager1D(StringRedisTemplate redisTemplate) throws Exception {
    final RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate(factory), Arrays.asList(CACHE_A, CACHE_B));
    redisCacheManager.setUsePrefix(true);
    redisCacheManager.setDefaultExpiration(60 * 60 * 24);
    return redisCacheManager;
}