spring集成 JedisCluster 连接 redis3.0 集群
2016-11-10 10:18
429 查看
原文:http://xyqck163.iteye.com/blog/2211108
客户端采用最新的jedis2.7
1.
maven依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
2.增加spring配置
3.增加connect-redis.properties配置文件,这里配置了6个节点
5.到此配置完成
使用时,直接注入即可,如下所示:
@Autowired
JedisClusterjedisCluster;
客户端采用最新的jedis2.7
1.
maven依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
2.增加spring配置
<beanname="genericObjectPoolConfig"class="org.apache.commons.pool2.impl.GenericObjectPoolConfig"> <propertyname="maxWaitMillis"value="-1"/> <propertyname="maxTotal"value="1000"/> <propertyname="minIdle"value="8"/> <propertyname="maxIdle"value="100"/> </bean> <beanid="jedisCluster"class="xxx.JedisClusterFactory"> <propertyname="addressConfig"> <value>classpath:connect-redis.properties</value> </property> <propertyname="addressKeyPrefix"value="address"/><!--属性文件里key的前缀--> <propertyname="timeout"value="300000"/> <propertyname="maxRedirections"value="6"/> <propertyname="genericObjectPoolConfig"ref="genericObjectPoolConfig"/> </bean>
3.增加connect-redis.properties配置文件,这里配置了6个节点
address1=172.16.23.27:6379 address2=172.16.23.27:6380 address3=172.16.23.27:6381 address4=172.16.23.27:6382 address5=172.16.23.27:6383 address6=172.16.23.27:6384 4.增加java类 packagecn.zsmy.palmdoctor.redis; importjava.util.HashSet; importjava.util.Properties; importjava.util.Set; importjava.util.regex.Pattern; importorg.apache.commons.pool2.impl.GenericObjectPoolConfig; importorg.springframework.beans.factory.FactoryBean; importorg.springframework.beans.factory.InitializingBean; importorg.springframework.core.io.Resource; importredis.clients.jedis.HostAndPort; importredis.clients.jedis.JedisCluster; publicclassJedisClusterFactoryimplementsFactoryBean<JedisCluster>,InitializingBean{ privateResourceaddressConfig; privateStringaddressKeyPrefix; privateStringpassword; privateJedisClusterjedisCluster; privateIntegertimeout; privateIntegermaxRedirections; privateGenericObjectPoolConfiggenericObjectPoolConfig; privatePatternp=Pattern.compile("^.+[:]\\d{1,5}\\s*$"); @Override publicJedisClustergetObject()throwsException{ returnjedisCluster; } @Override publicClass<?extendsJedisCluster>getObjectType(){ return(this.jedisCluster!=null?this.jedisCluster.getClass():JedisCluster.class); } @Override publicbooleanisSingleton(){ returntrue; } privateSet<HostAndPort>parseHostAndPort()throwsException{ try{ Propertiesprop=newProperties(); prop.load(this.addressConfig.getInputStream()); Set<HostAndPort>haps=newHashSet<HostAndPort>(); for(Objectkey:prop.keySet()){ if(!((String)key).startsWith(addressKeyPrefix)){ continue; } Stringval=(String)prop.get(key); booleanisIpPort=p.matcher(val).matches(); if(!isIpPort){ thrownewIllegalArgumentException("ip或port不合法"); } String[]ipAndPort=val.split(":"); HostAndPorthap=newHostAndPort(ipAndPort[0],Integer.parseInt(ipAndPort[1])); haps.add(hap); } returnhaps; }catch(IllegalArgumentExceptionex){ throwex; }catch(Exceptionex){ thrownewException("解析jedis配置文件失败",ex); } } @Override publicvoidafterPropertiesSet()throwsException{ Set<HostAndPort>haps=this.parseHostAndPort(); //jedisCluster=newJedisCluster(haps,timeout,maxRedirections,genericObjectPoolConfig); jedisCluster=newJedisCluster(haps,timeout,2000,maxRedirections,password,genericObjectPoolConfig); } publicvoidsetAddressConfig(ResourceaddressConfig){ this.addressConfig=addressConfig; } publicvoidsetTimeout(inttimeout){ this.timeout=timeout; } publicvoidsetMaxRedirections(intmaxRedirections){ this.maxRedirections=maxRedirections; } publicvoidsetAddressKeyPrefix(StringaddressKeyPrefix){ this.addressKeyPrefix=addressKeyPrefix; } publicvoidsetGenericObjectPoolConfig(GenericObjectPoolConfiggenericObjectPoolConfig){ this.genericObjectPoolConfig=genericObjectPoolConfig; } publicvoidsetPassword(Stringpassword){ this.password=password; } }
5.到此配置完成
使用时,直接注入即可,如下所示:
@Autowired
JedisClusterjedisCluster;
相关文章推荐
- spring集成 JedisCluster 连接 redis3.0 集群
- spring集成 JedisCluster 连接 redis3.0 集群
- spring集成 JedisCluster 连接 redis3.0 集群
- spring集成 JedisCluster 连接 redis3.0 集群
- spring集成 JedisCluster 联接 redis3.0 集群
- spring集成 JedisCluster 联接 redis3.0 集群
- spring集成 JedisCluster 联接 redis3.0 集群
- Springboot2.X集成redis集群(Lettuce)连接的方法
- spring boot下JedisCluster方式连接Redis集群的配置
- redis客户端jedis基于spring搭建单节点或者集群线程池连接
- Redis-3.0.6 集群部署集成SpringJava工程-----spring集成
- SpringBoot集成redis集群存储字符串和对象
- centos7环境下搭建redis及springboot连接集成
- 在Linux上(我的服务器是Ubuntu) 用redis-trib.rb搭建redis集群,并在客户端使用spring-data-redis连接(亲测)
- Redis 一二事 - 在spring中使用jedis 连接调试单机redis以及集群redis
- redis客户端可以连接集群,但JedisCluster连接redis集群一直报Could not get a resource from the pool
- redis3.0.5集群与spring集成
- Springboot Redis分布式集群(4)- JedisCluster连接测试集群
- Spring集成Jedis(不依赖spring-data-redis)(单机/集群模式)(待实践)
- java代码中操作Redis:单机redis、集群redis(spring+redis集成)