spring集成redis cluster详解
客户端采用最新的jedis2.7
1.maven依赖:
redis.clients jedis 2.7.3
2.增加spring配置
classpath:connect-redis.properties
3.增加connect-redis.properties配置文件
这里配置了6个节点
address1=*:* address2=*:* address3=*:* address4=*:* address5=*:* address6=*:*
4.增加java类:
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,InitializingBean{ privateResourceaddressConfig; privateStringaddressKeyPrefix; privateJedisClusterjedisCluster; privateIntegertimeout; privateIntegermaxRedirections; privateGenericObjectPoolConfiggenericObjectPoolConfig; privatePatternp=Pattern.compile("^.+[:]\\d{1,5}\\s*$"); @Override publicJedisClustergetObject()throwsException{ returnjedisCluster; } @Override publicClassgetObjectType(){ return(this.jedisCluster!=null?this.jedisCluster.getClass():JedisCluster.class); } @Override publicBooleanisSingleton(){ returntrue; } privateSet parseHostAndPort()throwsException{ try{ Propertiesprop=newProperties(); prop.load(this.addressConfig.getInputStream()); Set haps=newHashSet (); 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 haps=this.parseHostAndPort(); jedisCluster=newJedisCluster(haps,timeout,maxRedirections,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; } }
5.到此配置完成
使用时,直接注入即可,如下所示:
@Autowired JedisClusterjedisCluster;
总结
以上就是本文关于spring集成rediscluster详解的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。