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 }