配置Redis双数据源的关键步骤:在Spring Boot项目中,先在application.yml中定义两个Redis配置,如primary和secondary。然后创建Config类,使用@Primary注解指定主数据源,并通过LettuceConnectionFactory构建连接工厂。代码示例:@Bean @Primary public LettuceConnectionFactory primaryRedisConnectionFactory() { ... } 同样为secondary配置。接着创建两个RedisTemplate,一个用于读(secondary),一个用于写(primary)。通过@Qualifier区分注入,实现读写分离。测试时,确保主从同步正常,负载均衡生效,即可高效稳定运行。
第一篇:Spring Boot 2.x Redis 多数据源配置
Spring Boot中配置Redis双数据源非常简单,只需要在配置文件中定义多个数据源,然后创建对应的RedisTemplate即可。步骤如下:1. 在application.yml中配置两个redis节点:spring.redis.primary.host=127.0.0.1 spring.redis.primary.port=6379 spring.redis.secondary.host=127.0.0.1 spring.redis.secondary.port=6380 2. 创建RedisConfig配置类,注入两个LettuceConnectionFactory。3. 分别创建RedisTemplate<String, Object>,设置key和value序列化器为StringRedisSerializer和GenericJackson2JsonRedisSerializer。4. 使用@Qualifier("primaryRedisTemplate")和@Qualifier("secondaryRedisTemplate")在Service中注入使用。
第二篇:Redis读写分离双数据源实践
实现Redis读写分离的双数据源,首先确保主从复制正常,主库写,从库读。在Java代码中,使用动态数据源切换:创建DataSourceContextHolder类,setDataSourceType("master")或("slave")。然后在RedisTemplate的postProcess方法中根据上下文选择连接工厂。配置示例:@Configuration public class RedisConfig { @Primary @Bean("masterRedisTemplate") public RedisTemplate masterRedisTemplate() { ... } @Bean("slaveRedisTemplate") public RedisTemplate slaveRedisTemplate() { ... } } Service中使用AOP切面自动切换,写操作master,读操作slave。
第三篇:多数据源Redis配置详解
在application.properties中设置:spring.redis.cache.host=localhost spring.redis.cache.port=6379 spring.redis.queue.host=localhost spring.redis.queue.port=6380 然后定义两个配置类:CacheRedisConfig和QueueRedisConfig,每个返回一个RedisTemplate。主类启动时扫描这些配置。使用时通过@Resource(name="cacheRedisTemplate")注入。注意设置相同的序列化器,避免反序列化问题。测试连接池大小:spring.redis.cache.lettuce.pool.max-active=20。
第四篇:高效Redis双数据源在微服务中的应用
微服务架构下,双Redis数据源配置:使用Nacos配置中心动态加载redis.primary.url和redis.secondary.url。创建RedisAutoConfiguration,条件化加载两个RedisTemplate。引入redis动态路由:public class DynamicRedisTemplate extends RedisTemplate { private String dataSourceKey; } 通过ThreadLocal切换数据源key,实现一主一备高可用。监控哨兵模式,确保 failover 自动切换。
第五篇:Spring Cloud Redis多实例配置
Spring Cloud中配置双Redis:依赖spring-cloud-starter-redis。yml文件:redis: master: address: 127.0.0.1:6379 slave: address: 127.0.0.1:6380 RedisProperties配置类读取属性。@EnableRedisHttpSession(maxInactiveIntervalInSeconds=86400) 结合session共享。自定义RedisTemplate配置序列化:RedisSerializer
第六篇:Redis双数据源常见问题解决
配置双数据源时注意:1. 序列化一致性,否则报错。2. 连接池配置:max-total=200 max-idle=10。3. 主从延迟监控,使用pipeline批量操作提升性能。代码:RedisTemplate primary = applicationContext.getBean("primaryRedisTemplate", RedisTemplate.class); primary.opsForValue().set("key", "value"); 确保事务支持:template.setEnableTransactionSupport(true); 测试多线程下数据源隔离。
FAQ
Q: 双数据源如何实现读写分离?
A: 通过AOP或拦截器判断操作类型,写走主库,读走从库。
Q: 配置后连接不上怎么办?
A: 检查yml地址端口,确认Redis服务启动,防火墙允许。
Q: 序列化报错怎么解决?
A: 统一使用GenericJackson2JsonRedisSerializer。
Q: 如何监控双数据源健康?
A: 集成Spring Boot Actuator,暴露/health端点。