相关疑难解决方法(0)

我可以为@Cacheable设置TTL吗?

我正在尝试@CacheableSpring 3.1 的注释支持,并想知道是否有任何方法可以通过设置TTL使缓存数据在一段时间后清除?现在我可以看到我需要通过使用它来清除它@CacheEvict,并且通过使用它@Scheduled我可以自己做一个TTL实现但是对于这么简单的任务似乎有点多了?

java spring

87
推荐指数
8
解决办法
8万
查看次数

在Redis中使用Spring缓存时,在特定时间设置到期密钥

我正在春季缓存抽象注释,以将缓存应用于我的服务方法。

由于我将Redis用作缓存存储,因此我想使用在特定时间使缓存过期的选项,因为Redis支持该选项。Redis中的expireat命令可用于设置将来的到期时间。

我不确定使用RedisCache时如何对属于缓存的键进行操作。

我试图通过创建一个bean来定制RedisCacheManager。

我看到有一个暴露的getNativeCache()方法。但是我没有找到任何方法来设置使用它的expireat的值。

如果有一种自定义RedisCacheManager的方法,以便特定缓存的所有键在到期时使用同一时间,请告诉我。

redis spring-data-redis spring-cache

4
推荐指数
2
解决办法
1849
查看次数

在springboot2.0中使用@cacheable时如何为每个Redis缓存配置不同的ttl

我在带有Redis的springboot2.0中使用@cacheable。我已将RedisCacheManager配置如下:

@Bean
public RedisCacheManager redisCacheManager(RedisConnectionFactory connectionFactory) {

    RedisCacheWriter redisCacheWriter = RedisCacheWriter.lockingRedisCacheWriter(connectionFactory);
    SerializationPair<Object> valueSerializationPair = RedisSerializationContext.SerializationPair
            .fromSerializer(new GenericJackson2JsonRedisSerializer());
    RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
    cacheConfiguration = cacheConfiguration.serializeValuesWith(valueSerializationPair);
    cacheConfiguration = cacheConfiguration.prefixKeysWith("myPrefix");
    cacheConfiguration = cacheConfiguration.entryTtl(Duration.ofSeconds(30));

    RedisCacheManager redisCacheManager = new RedisCacheManager(redisCacheWriter, cacheConfiguration);
    return redisCacheManager;
}
Run Code Online (Sandbox Code Playgroud)

但这使所有密钥的ttl变为30秒,如何为每个具有不同缓存名称的redis缓存配置不同的ttl?

caching redis spring-boot

2
推荐指数
2
解决办法
2580
查看次数