Redis - 具有不同 TTL 的多个缓存

问题描述 投票:0回答:1

我正在使用 Java 17 / Spring,这个 application.yml 运行良好。 问题是我需要为每个缓存设置不同的生存时间:

缓存 1 需要 10 秒

cache2 为 20 秒

spring:
  cache:
    cache-names: cache1, cache2
    type: redis
    redis:
      time-to-live: 10s
      key-prefix: rop
      use-key-prefix: true
      cache-null-values: false
      enable-transaction-support: false
  data:
    redis:
      url:redis://localhost:6379

我已经尝试过该文件的一些变体,但没有一个有效。 有什么线索吗?预先感谢!

java spring redis memcached spring-cache
1个回答
0
投票

我在这个link

找到了解决方案

这是帮助我的代码:

@Bean (name="cacheManager")
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
    RedisCacheConfiguration conf_1_info = RedisCacheConfiguration.defaultCacheConfig()
            .entryTtl(Duration.ofMinutes(10));

    RedisCacheConfiguration conf_2_info = RedisCacheConfiguration.defaultCacheConfig()
            .entryTtl(Duration.ofMinutes(30));

    Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<String, RedisCacheConfiguration>();
    cacheConfigurations.put("cache1", conf_1_info);
    cacheConfigurations.put("cache2", conf_2_info);

    return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(connectionFactory)
            .withInitialCacheConfigurations(cacheConfigurations).build();
}
© www.soinside.com 2019 - 2024. All rights reserved.