gpt4 book ai didi

Spring Data Redis 多实例

转载 作者:IT王子 更新时间:2023-10-29 06:10:02 30 4
gpt4 key购买 nike

我有 2 个 Redis 服务器实例 redis1 和 redis2。我正在尝试使用 Spring Data Redis 支持从 redis1 获取数据并将数据保存到 redis2,但它不起作用。我的代码:

//class a
@Configuration
public class RedisAConfig {
@Bean
public JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("host1");
return jedisConnectionFactory;
}

@Bean
public RedisTemplate<String, String> redisTemplate() {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(jedisConnectionFactory());

return redisTemplate;
}
}

//class b
@Configuration
public class RedisBConfig {
@Bean
public JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("host2");
return jedisConnectionFactory;
}

@Bean
public RedisTemplate<String, String> redisTemplate() {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(jedisConnectionFactory());

return redisTemplate;
}
}

//use class
@EnableConfigurationProperties({RedisAConfig.class, RedisBConfig.class})
public class Receiver {

@Autowired
private RedisAConfig redisAConfig;

@Autowired
private RedisAConfig redisBConfig;

private String getUsernameFromRedis(String userIp) {

return redisBConfig.redisTemplate().opsForValue()..get(userIp);
}

private void saveThreatsToRedis(String userIp, List<Log> threats) {
JSONSerializer serializer = new JSONSerializer();
String json = serializer.serialize(threats);
String key = "TH:" + userIp;
redisAConfig.redisTemplate().opsForValue().set(key, json);
}
}

当我使用方法 getUsernameFromRedis() 时,使用的 redis 主机是“host1”而不是“host2”:-(问题出在哪里?

最佳答案

因为它是单个应用程序,所以您必须具有唯一的 bean 名称 才能将它们全部填充到单个 ApplicationContext。否则上下文启动后只有一个同名bean存在。

默认情况下,@Bean 使用方法中的名称进行填充。这就是您看到 host1 而不是 host2 的原因。

所以,或者为那些 bean 方法提供唯一的名称,或者使用 @Bean(name = ) 属性。

关于Spring Data Redis 多实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28015587/

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