gpt4 book ai didi

java - 我们如何在两个 war 文件之间访问相同的缓存?

转载 作者:行者123 更新时间:2023-12-01 23:47:05 24 4
gpt4 key购买 nike

我使用 Spring 注释的 @Cacheable 来缓存数据,并使用 Redis 作为缓存管理器。

我在一场 war 中创建了名为 xyx 的缓存,现在我想在另一场 war 中访问/更新/删除相同的缓存。

下面是我用来创建缓存管理器的代码

@Bean
public JedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();

// Defaults
redisConnectionFactory.setHostName("127.0.0.1");
redisConnectionFactory.setPort(6379);
return redisConnectionFactory;
}

Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(cf);
return redisTemplate;
}

@Primary
@Bean(name = "cManager")
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cm= new RedisCacheManager(redisTemplate);
return cm;
}

下面是war 1中缓存数据的方法

@Cacheable(value = "xyz"  , cacheManager = "cManager")
public Map<String, Map<String, List<DTO>>> cachingData()
throws CustomException {
//logic
}

最佳答案

只要两个 Web 应用程序连接到同一个 Redis 实例,并使用相同的 cacheName 和缓存键,这应该透明地工作,就像在同一场 war 中一样。

注释示例

@Cacheable(cacheNames = "myCache", key = "'myKey'")
public String myCacheableMethod(){
return "some value";
}

关于java - 我们如何在两个 war 文件之间访问相同的缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58236538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com