package com.chinacreator.videoalliance.order.util; import org.apache.commons.lang.StringUtils; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import com.chinacreator.videoalliance.common.dao.DictionaryDao; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; import java.io.IOException; import java.io.InputStream; import java.util.HashSet; import java.util.Properties; import java.util.Set; /** * 集群环境下Jedis操作 */ @Component public class RedisCluster { public static JedisCluster jedis; static { //20220322改走配置化 //redis集群地址 String redisCluster = null; //redis集群密码 String redisPassword = null; try { System.out.println("/************RedisCluster开始查询数据库************/"); DictionaryDao dao = new DictionaryDao(); redisCluster = dao.getValue("videoif_redisCluster"); redisPassword = dao.getValue("videoif_redisPassword"); System.out.println("redisCluster=>"+redisCluster); System.out.println("redisPassword=>"+redisPassword); System.out.println("/************RedisCluster查询数据库结束************/"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("RedisCluster查询数据库结束出现异常"+e.getMessage()); } // 添加集群的服务节点Set集合 Set hostAndPortsSet = new HashSet(); //测试 //String redisCluster="10.0.17.8:7000,10.0.17.39:7000,10.0.17.36:7000,10.0.17.31:7000,10.0.17.11:7000,10.0.17.15:7000"; //String redisPassword="e821202ed5af57c30ae3"; //正式 /** String redisCluster="172.18.0.1:7000,172.18.0.2:7000,172.18.0.3:7000,172.18.0.4:7000,172.18.0.5:7000,172.18.0.6:7000"; String redisPassword="r515f2114669tv1f98b0b5330ec0e2sd"; **/ //如果配置为空,默认连接正式环境 if(StringUtils.isEmpty(redisCluster) || StringUtils.isEmpty(redisPassword)){ redisCluster="172.18.0.1:7000,172.18.0.2:7000,172.18.0.3:7000,172.18.0.4:7000,172.18.0.5:7000,172.18.0.6:7000"; redisPassword="r515f2114669tv1f98b0b5330ec0e2sd"; } String[] split = redisCluster.split(","); for (String s : split) { String[] server = s.split(":"); hostAndPortsSet.add(new HostAndPort(server[0], Integer.parseInt(server[1]))); } //System.out.println(hostAndPortsSet); // Jedis连接池配置 GenericObjectPoolConfig jedisPoolConfig = new GenericObjectPoolConfig(); // 最大空闲连接数, 默认8个 jedisPoolConfig.setMaxIdle(10); // 最大连接数, 默认8个 jedisPoolConfig.setMaxTotal(500); //最小空闲连接数, 默认0 jedisPoolConfig.setMinIdle(5); // 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 jedisPoolConfig.setMaxWaitMillis(-1); // 设置2秒 //对拿到的connection进行validateObject校验 jedisPoolConfig.setTestOnBorrow(true); jedis = new JedisCluster(hostAndPortsSet, 6000, 6000, 1, redisPassword, jedisPoolConfig); } }