在Spring Boot中配置和使用多个Redis数据源并进行切换,可以通过以下步骤实现:
首先,确保你的pom.xml文件中包含了Spring Boot和Redis的依赖:
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
</dependencies>
在application.yml或application.properties文件中配置多个Redis数据源:
# application.yml
spring:
  redis:
    primary:
      host: localhost
      port: 6379
      password: your_password
      database: 0
    secondary:
      host: localhost
      port: 6380
      password: your_password
      database: 0
创建一个配置类来定义多个Redis数据源:
import org.springframework.beans.factory.annotation.Bean;
import org.springframework.beans.factory.annotation.Configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
@Configuration
public class RedisConfig {
    @Bean
    @Primary
    public LettuceConnectionFactory primaryRedisConnectionFactory() {
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
        config.setHostName("localhost");
        config.setPort(6379);
        config.setPassword("your_password");
        config.setDatabase(0);
        return new LettuceConnectionFactory(config);
    }
    @Bean
    public LettuceConnectionFactory secondaryRedisConnectionFactory() {
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
        config.setHostName("localhost");
        config.setPort(6380);
        config.setPassword("your_password");
        config.setDatabase(0);
        return new LettuceConnectionFactory(config);
    }
    @Bean
    @Primary
    public RedisTemplate<String, Object> primaryRedisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(primaryRedisConnectionFactory());
        return template;
    }
    @Bean
    public RedisTemplate<String, Object> secondaryRedisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(secondaryRedisConnectionFactory());
        return template;
    }
}
在你的服务类中,你可以使用不同的数据源来操作Redis:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
@Service
public class RedisService {
    @Autowired
    private StringRedisTemplate primaryRedisTemplate;
    @Autowired
    private StringRedisTemplate secondaryRedisTemplate;
    public void usePrimaryDataSource() {
        primaryRedisTemplate.opsForValue().set("key", "value");
        String value = primaryRedisTemplate.opsForValue().get("key");
        System.out.println("Value from primary data source: " + value);
    }
    public void useSecondaryDataSource() {
        secondaryRedisTemplate.opsForValue().set("key", "value");
        String value = secondaryRedisTemplate.opsForValue().get("key");
        System.out.println("Value from secondary data source: " + value);
    }
}
你可以在你的业务逻辑中根据需要切换不同的数据源:
@Service
public class BusinessService {
    @Autowired
    private RedisService redisService;
    public void performOperation() {
        // Use primary data source
        redisService.usePrimaryDataSource();
        // Switch to secondary data source
        redisService.useSecondaryDataSource();
    }
}
通过以上步骤,你可以在Spring Boot应用中配置和使用多个Redis数据源,并根据需要切换它们。