# redis-dynamic-datasource
**Repository Path**: gjzcode/redis-dynamic-datasource
## Basic Information
- **Project Name**: redis-dynamic-datasource
- **Description**: Redis动态数据源。
支持多数据源、多db切换
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-05-16
- **Last Updated**: 2025-05-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Redis动态数据源
### 基于Lettuce客户端实现Redis多数据源配置
参考:https://zhuanlan.zhihu.com/p/405242915
Tips:原文中LettuceConnectionConfiguration类在3.2.3版本中不是public,外包无法访问,
所以对相关类进行的重写。
基于 spring-boot-starter-data-redis:3.2.3
### 用例
pom
```xml
org.facelay
redis-dynamic-datasource
latest.version
```
application.yaml
```yaml
spring:
data:
enable-multi-redis: true # 开启多数据源配置
multi-redis:
default: # 默认数据源节点,必须为default
host: 127.0.0.1
port: 6379
password: 123456
database: 1
source2: # 其它数据源节点,名字随意
host: 127.0.0.1
port: 6379
password: 123456
database: 2
source3:
host: 127.0.0.1
port: 6379
password: 123456
database: 3
```
case
```java
@Resource
private RedisTemplate redisTemplate;
@Resource
private MultiRedisConnectionFactory redisConnectionFactory;
/**
* 操作指定的数据源的指定db
*/
@GetMapping("/multiRedis")
public String multiRedis() {
redisTemplate.opsForValue().set("k1", "k1", 5, TimeUnit.MINUTES);
redisConnectionFactory.setCurrentRedis("source2");
redisTemplate.opsForValue().set("k2", "k2", 6, TimeUnit.MINUTES);
redisConnectionFactory.setCurrentRedis("source3");
redisTemplate.opsForValue().set("k3", "k3", 7, TimeUnit.MINUTES);
return "success";
}
```