在 Spring Boot 中,可以使用 RedisTemplate 进行 Redis 的连接和操作。要连接多个 Redis 实例,你可以创建多个 RedisTemplate 实例,并通过配置不同的连接工厂来连接到不同的 Redis 实例。
首先,在 application.properties
(或 application.yml
)配置文件中添加 Redis 连接信息:
# 第一个 Redis 实例
spring.redis.host=127.0.0.1
spring.redis.port=6379
# 第二个 Redis 实例
spring.redis.second.host=127.0.0.1
spring.redis.second.port=6380
然后,创建两个 Redis 连接工厂和对应的 RedisTemplate:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("127.0.0.1");
jedisConnectionFactory.setPort(6379);
// 其他连接工厂配置...
return jedisConnectionFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(connectionFactory);
// 其他 RedisTemplate 配置...
return redisTemplate;
}
@Bean
public RedisTemplate<String, Object> secondRedisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(secondRedisConnectionFactory());
// 其他 RedisTemplate 配置...
return redisTemplate;
}
@Bean
public RedisConnectionFactory secondRedisConnectionFactory() {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("127.0.0.1");
jedisConnectionFactory.setPort(6380);
// 其他连接工厂配置...
return jedisConnectionFactory;
}
}
现在你已经创建了两个 RedisTemplate 实例,分别连接到了不同的 Redis 实例。你可以通过在代码中注入这两个实例,并使用它们进行相应的操作。示例:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@Service
public class MyService {
private final RedisTemplate<String, Object> redisTemplate;
private final RedisTemplate<String, Object> secondRedisTemplate;
@Autowired
public MyService(RedisTemplate<String, Object> redisTemplate, RedisTemplate<String, Object> secondRedisTemplate) {
this.redisTemplate = redisTemplate;
this.secondRedisTemplate = secondRedisTemplate;
}
public void someMethod() {
// 使用 redisTemplate 对第一个 Redis 实例进行操作
redisTemplate.opsForValue().set("key1", "value1");
// 使用 secondRedisTemplate 对第二个 Redis 实例进行操作
secondRedisTemplate.opsForValue().set("key2", "value2");
}
}