多个redistemplate_spring-boot 速成(12) - 如何注入多个redis StringRedisTemplate-阿里云开发者社区...

本文展示了如何在Spring Boot中配置并使用多个不同的StringRedisTemplate实例,包括设置Redis Sentinel配置、Jedis Pool配置以及数据库选择。通过创建多个bean,每个bean对应一个特定的数据库,实现了对不同数据库的独立操作。
摘要由CSDN通过智能技术生成

1 packagecn.mwee.order.cloud.admin.common.config;2

3 importorg.springframework.beans.factory.annotation.Value;4 importorg.springframework.context.annotation.Bean;5 importorg.springframework.context.annotation.Configuration;6 importorg.springframework.context.annotation.Primary;7 importorg.springframework.data.redis.connection.RedisConnectionFactory;8 importorg.springframework.data.redis.connection.RedisSentinelConfiguration;9 importorg.springframework.data.redis.connection.jedis.JedisConnectionFactory;10 importorg.springframework.data.redis.core.StringRedisTemplate;11 importorg.springframework.data.redis.serializer.StringRedisSerializer;12 importredis.clients.jedis.JedisPoolConfig;13

14 importjava.util.HashSet;15 importjava.util.Set;16

17 /**

18 * Created by 菩提树下的杨过(http://yjmyzz.cnblogs.com/) on 19/09/2017.19 */

20 @Configuration21 public classRedisConfig {22

23 @Value("${redis.sentinel.group}")24 protectedString sentinelGroupName;25

26 @Value("${redis.sentinel.nodes}")27 protectedString sentinelNodes;28

29 @Value("${redis.maxTotal}")30 protected intmaxTotal;31

32 @Value("${redis.minIdle}")33 protected intminIdle;34

35 @Value("${redis.maxIdle}")36 protected intmaxIdle;37

38 @Value("${redis.maxWaitMillis}")39 protected longmaxWaitMillis;40

41 @Value("${redis.testOnBorrow}")42 protected booleantestOnBorrow;43

44 @Value("${redis.testOnReturn}")45 protected booleantestOnReturn;46

47 @Value("${redis.password}")48 protectedString password;49

50 @Value("${redis.timeout}")51 protected inttimeout;52

53 @Bean54 publicRedisSentinelConfiguration redisSentinelConfiguration() {55 String[] nodes = sentinelNodes.split(",");56 Set setNodes = new HashSet<>();57 for(String n : nodes) {58 setNodes.add(n.trim());59 }60 RedisSentinelConfiguration configuration = newRedisSentinelConfiguration(sentinelGroupName, setNodes);61 returnconfiguration;62 }63

64 @Bean65 publicJedisPoolConfig jedisPoolConfig() {66 JedisPoolConfig poolConfig = newJedisPoolConfig();67 poolConfig.setMaxTotal(maxTotal);68 poolConfig.setMinIdle(minIdle);69 poolConfig.setMaxIdle(maxIdle);70 poolConfig.setMaxWaitMillis(maxWaitMillis);71 poolConfig.setTestOnBorrow(testOnBorrow);72 poolConfig.setTestOnReturn(testOnReturn);73 returnpoolConfig;74 }75

76 @Bean77 publicStringRedisSerializer stringRedisSerializer() {78 return newStringRedisSerializer();79 }80

81 @Bean(name = "redisTemplate00")82 @Primary83 publicStringRedisTemplate redisTemplate00() {84 return buildRedisTemplate(buildConnectionFactory(0));85 }86

87 @Bean(name = "redisTemplate01")88 publicStringRedisTemplate redisTemplate01() {89 return buildRedisTemplate(buildConnectionFactory(1));90 }91

92 @Bean(name = "redisTemplate02")93 publicStringRedisTemplate redisTemplate02() {94 return buildRedisTemplate(buildConnectionFactory(2));95 }96

97 @Bean(name = "redisTemplate03")98 publicStringRedisTemplate redisTemplate03() {99 return buildRedisTemplate(buildConnectionFactory(3));100 }101

102 @Bean(name = "redisTemplate04")103 publicStringRedisTemplate redisTemplate04() {104 return buildRedisTemplate(buildConnectionFactory(4));105 }106

107 private JedisConnectionFactory buildConnectionFactory(intdatabase) {108 JedisConnectionFactory connectionFactory = newJedisConnectionFactory(redisSentinelConfiguration(), jedisPoolConfig());109 connectionFactory.setUsePool(true);110 connectionFactory.setTimeout(timeout);111 connectionFactory.setDatabase(database);112 connectionFactory.setPassword(password);113 connectionFactory.afterPropertiesSet();114 returnconnectionFactory;115 }116

117 protectedStringRedisTemplate buildRedisTemplate(RedisConnectionFactory connectionFactory) {118 StringRedisTemplate template = newStringRedisTemplate();119 template.setConnectionFactory(connectionFactory);120 template.setValueSerializer(stringRedisSerializer());121 template.afterPropertiesSet();122 returntemplate;123 }124

125 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值