背景
? 有些时候在一个项目里,由于业务问题,可能仅仅操作一个Redis数据源已经不能满足,比如某个运营系统,对接着多个不同的服务,处理数据时又不想通过远程调用,那只能增加一个数据源来解决问题,像MySQL的多数据源一样。
yml配置示例
这里连接池选用的是lettuce。
1 redis:
2 host: localhost
3 port: 6379
4 password: 123456
5 timeout: 60000
6 database: 10
7 lettuce:
8 pool:
9 min-idle: 0
10 max-idle: 10
11 max-wait: -1
12 max-active: 200
13 time-between-eviction-runs: -1
14 redis-live:
15 host: localhost
16 port: 6379
17 password: 123456
18 database: 0
实现代码
关于序列化使用的是jackson。
以下提供了创建RedisTemplate以及StringRedisTemplate。
关于二者的区别:
两者的关系是StringRedisTemplate继承RedisTemplate。
两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。
SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。
StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。
RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。
1 /**
2 *
3 * RedisLettuce 连接实例配置
4 *
5 *
6 * @author zhengshangjin
7 * @version 1.0.0
8 * @since 1.0.0
9 * created on 2020-04-23
10 */
11 @Configuration
12 @EnableCaching
13 public class RedisLettuceConfig {
14
15 /**
16 * live数据源
17 */
18 @Value("${spring.redis-live.host}")
19 private String redisLiveHost;
20
21 @Value("${spring.redis-live.port}")
22 private int redisLivePort;
23
24 @Value("${spring.redis-live.password}")
25 private String redisLivePass;
26
27 @Value("${spring.redis-live.database}")
28 private int redisLiveDb;
29
30 /**
31 * 公共配置
32 */
33 @Value("${spring.redis.timeout}")
34 private long timeout;
35
36 @Value("${spring.redis.lettuce.pool.min-idle}")
37 private int minIdle;
38
39 @Value("${spring.redis.lettuce.pool.max-idle}")
40 private int maxIdle;
41
42 @Value("${spring.redis.lettuce.pool.max-active}")
43 private int maxActive;
44
45 @Value("${spring.redis.lettuce.pool.max-wait}")
46 private int maxWait;
47
48 /**
49 * 装配 RedisTemplate
50 *
51 * 这里根据默认连接配置 装配实例
52 * >
53 *
54 * @param redisConnectionFactory 默认
55 * @return redisTemplate
56 * @author zhengshangjin
57 * created on 2020-04-23
58 */
59 @Bean(name = "redisTemplate")
60 public RedisTemplate
注入使用
根据@Qualifier指定beanname来获取
@Autowired
@Qualifier("liveStringRedisTemplate")
public StringRedisTemplate stringRedisTemplate;