Redis实现SpringBoot集成Redis多数据源
背景
有些时候在一个项目里,由于业务问题,可能仅仅操作一个Redis数据源已经不能满足,比如某个运营系统,对接着多个不同的服务,处理数据时又不想通过远程调用,那只能增加一个数据源来解决问题,像MySQL的多数据源一样。配置示例
这里连接池选用的是lettuce。redis: host: localhost port: 6379 password: 123456 timeout: 60000 database: 10 lettuce: pool: min-idle: 0 max-idle: 10 max-wait: -1 max-active: 200 time-between-eviction-runs: -1 redis-live: host: localhost port: 6379 password: 123456 database: 0 实现代码
关于序列化使用的是jackson。
以下提供了创建RedisTemplate以及StringRedisTemplate。
关于二者的区别:两者的关系是StringRedisTemplate继承RedisTemplate。两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。 StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。 RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。/** * * RedisLettuce 连接实例配置 * * * @author zhengshangjin * @version 1.0.0 * @since 1.0.0 * created on 2020-04-23 */ @Configuration @EnableCaching public class RedisLettuceConfig { /** * live数据源 */ @Value("${spring.redis-live.host}") private String redisLiveHost; @Value("${spring.redis-live.port}") private int redisLivePort; @Value("${spring.redis-live.password}") private String redisLivePass; @Value("${spring.redis-live.database}") private int redisLiveDb; /** * 公共配置 */ @Value("${spring.redis.timeout}") private long timeout; @Value("${spring.redis.lettuce.pool.min-idle}") private int minIdle; @Value("${spring.redis.lettuce.pool.max-idle}") private int maxIdle; @Value("${spring.redis.lettuce.pool.max-active}") private int maxActive; @Value("${spring.redis.lettuce.pool.max-wait}") private int maxWait; /** * 装配 RedisTemplate *
* 这里根据默认连接配置 装配实例 * > * * @param redisConnectionFactory 默认 * @return redisTemplate * @author zhengshangjin * created on 2020-04-23 */ @Bean(name = "redisTemplate") public RedisTemplate