在Spring Boot中实现Redis多数据源,可以通过配置多个RedisTemplate
实例来实现。以下是一个简单的示例:
@Configuration
public class RedisConfig {
@Bean
public LettuceConnectionFactory redis1ConnectionFactory() {
// 配置第一个Redis数据源的连接信息
RedisStandaloneConfiguration serverConfig = new RedisStandaloneConfiguration("host1", 6379);
return new LettuceConnectionFactory(serverConfig);
}
@Bean
public LettuceConnectionFactory redis2ConnectionFactory() {
// 配置第二个Redis数据源的连接信息
RedisStandaloneConfiguration serverConfig = new RedisStandaloneConfiguration("host2", 6379);
return new LettuceConnectionFactory(serverConfig);
}
@Bean
public RedisTemplate<Object, Object> redis1Template() {
// 创建第一个Redis数据源的Template
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redis1ConnectionFactory());
return template;
}
@Bean
public RedisTemplate<Object, Object> redis2Template() {
// 创建第二个Redis数据源的Template
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redis2ConnectionFactory());
return template;
}
}
在这个配置类中,我们定义了两个LettuceConnectionFactory
实例来分别连接两个不同的Redis数据源,并且创建了两个RedisTemplate
实例,每个实例关联到一个ConnectionFactory
。
使用这两个RedisTemplate
实例,你可以分别执行对应数据源的操作,例如:
@Service
public class RedisService {
@Autowired
private RedisTemplate<Object, Object> redis1Template;
@Autowired
private RedisTemplate<Object, Object> redis2Template;
public void writeToRedis1(String key, Object value) {
redis1Template.opsForValue().set(key, value);
}
public Object readFromRedis1(String key) {
return redis1Template.opsForValue().get(key);
}
public void writeToRedis2(String key, Object value) {
redis2Template.opsForValue().set(key, value);
}
public Object readFromRedis2(String key) {
return redis2Template.opsForValue().get(key);
}
}
在这个服务类中,我们通过注入对应的RedisTemplate
实例来实现对两个不同数据源的读写操作。