Java 如何在两个war文件之间访问相同的缓存?
我使用Java 如何在两个war文件之间访问相同的缓存?,java,spring,redis,Java,Spring,Redis,我使用Springannotation的@Cacheable来缓存数据,Redis作为缓存管理器 我在一场战争中创建了名为xyx的缓存,现在我想在另一场战争中访问/更新/删除相同的缓存 下面是我用来创建缓存管理器的代码 @Bean public JedisConnectionFactory redisConnectionFactory() { JedisConnectionFactory redisConnectionFactory = new JedisConnectionFact
Spring
annotation的@Cacheable
来缓存数据,Redis
作为缓存管理器
我在一场战争中创建了名为xyx的缓存,现在我想在另一场战争中访问/更新/删除相同的缓存
下面是我用来创建缓存管理器的代码
@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;
}
@Bean
public JedisConnectionFactory redisConnectionFactory(){
JedisConnectionFactory redisConnectionFactory=新的JedisConnectionFactory();
//默认值
setHostName(“127.0.0.1”);
设置端口(6379);
返回连接工厂;
}
豆子
公共RedisTemplate RedisTemplate(RedisConnectionFactory cf){
RedisTemplate RedisTemplate=新RedisTemplate();
redisTemplate.setConnectionFactory(cf);
返回模板;
}
@初级的
@Bean(name=“cManager”)
公共缓存管理器缓存管理器(RedisTemplate RedisTemplate){
RedisCacheManager cm=新的RedisCacheManager(redisTemplate);
返回cm;
}
下面是war 1中缓存数据的方法
@Cacheable(value = "xyz" , cacheManager = "cManager")
public Map<String, Map<String, List<DTO>>> cachingData()
throws CustomException {
//logic
}
@Cacheable(value=“xyz”,cacheManager=“cManager”)
公共地图cachingData()
抛出自定义异常{
//逻辑
}
只要两个web应用程序都连接到同一个Redis实例,并且使用相同的cacheName和cache密钥,就应该透明地工作,就像在同一场战争中一样
示例注释
@Cacheable(cacheNames = "myCache", key = "'myKey'")
public String myCacheableMethod(){
return "some value";
}
在这里,我们创建了名为“myCache”和键为“myKey”的缓存。我的问题是我们如何在另一场战争中访问同一个缓存?我不确定我是否理解你的问题。在另一场战争中,同样的代码也可以访问同样的缓存。无需更改代码。我已添加有问题的代码。在war2中,我使用相同的代码创建cachemanager。现在,当我尝试从war2的cachemanager获取CacheNames()时,我得到了空响应