这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战
背景
在微服务概念中,不同的服务需要使用不同的数据库,包括mysql
与redis
,但是如果是需要高并发又与这样设计造成冲突,因为直接查询redis
会更快一些。
集成Redis多数据源与lettuce连接池
springboot
中集成redis
多个数据源需要屏蔽starter中带有的原生RedisAutoConfiguration
。
并模拟RedisAutoConfiguration
,设置多个redisTemplate
的bean。并在使用时通过Autowired
+Qualifier
注入。
依赖添加
1 | xml复制代码<dependency> |
配置文件
yaml
文件中配置多数据源连接信息,配置一个端口为6379
的默认Redis1和一个端口为6380
的Redis2
1 | yml复制代码redis: |
排除RedisAutoConfiguration
不使用默认的springboot
进行加载初始化,必须要在注解中排除RedisAutoConfiguration
1 | java复制代码@Import(value = { |
Redis1配置类
配置lettuce
连接池、数据源、数据源的连接工厂、RedisTemplate
。并设置序列化方式
1 | java复制代码@EnableConfigurationProperties({RedisLettuceProperties1.class}) |
Redis2配置类
1 | java复制代码@EnableConfigurationProperties({RedisLettuceProperties2.class}) |
测试
引用redisTemplate并指定来自哪个bean
1 | java复制代码 @Autowired |
小结
springboot
配置redis
多数据源的过程比较简单,引入依赖包,添加配置,初始化Bean。
需要注意的是Redis
有默认的实现类了,所以在装配使用的时候,要加上@Qualifier
注解并指定前面Bean注入的名字,不然自动注入后会使用默认的配置,不能使用指定的Redis
数据源。
本文转载自: 掘金