在Spring Boot整合Redis多数据源时,通常需要定义多个RedisTemplate
实例,每个实例连接不同的Redis数据库。以下是一个简化的例子,展示如何配置和使用两个Redis数据源。
@Configuration
public class RedisConfig {
@Bean
public LettuceConnectionFactory redis1ConnectionFactory() {
return new LettuceConnectionFactory(new RedisStandaloneConfiguration("host1", 6379));
}
@Bean
public LettuceConnectionFactory redis2ConnectionFactory() {
return new LettuceConnectionFactory(new RedisStandaloneConfiguration("host2", 6379));
}
@Bean
public RedisTemplate<String, Object> redis1Template() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redis1ConnectionFactory());
return template;
}
@Bean
public RedisTemplate<String, Object> redis2Template() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redis2ConnectionFactory());
return template;
}
}
接下来,可以创建一个RedisUtil类来封装对这些RedisTemplate
的操作:
@Component
public class RedisUtil {
@Autowired
@Qualifier("redis1Template")
private RedisTemplate<String, Object> redis1Template;
@Autowired
@Qualifier("redis2Template")
private RedisTemplate<String, Object> redis2Template;
public void setValueToRedis1(String key, Object value) {
redis1Template.opsForValue().set(key, value);
}
public Object getValueFromRedis1(String key) {
return redis1Template.opsForValue().get(key);
}
public void setValueToRedis2(String key, Object value) {
redis2Template.opsForValue().set(key, value);
}
public Object getValueFromRedis2(String key) {
return redis2Template.opsForValue().get(key);
}
}
在这个例子中,我们定义了两个RedisTemplate
实例,通过@Qualifier
注解指定注入哪一个实例。RedisUtil
类提供了简单的设置和获取值的方法,分别操作两个不同的Redis数据库。