# 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"; } ```