spring集成 JedisCluster 连接 redis3.0 集群

来源:互联网 发布:mac os系统下载百度云 编辑:程序博客网 时间:2024/05/17 03:06

maven依赖:

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.0</version></dependency>

增加spring 配置

<bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig" >          <property name="maxWaitMillis" value="-1" />          <property name="maxTotal" value="1000" />          <property name="minIdle" value="8" />          <property name="maxIdle" value="100" />  </bean>    <bean id="jedisCluster" class="xxx.JedisClusterFactory">      <property name="timeout" value="300000" />      <property name="maxRedirections" value="6" />     <property name="clusterList" value="172.16.23.27:6379,172.16.23.27:6380" />    <property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" /></bean> 

增加java类


import java.util.HashSet;  import java.util.Properties;  import java.util.Set;  import java.util.regex.Pattern;    import org.apache.commons.pool2.impl.GenericObjectPoolConfig;  import org.springframework.beans.factory.FactoryBean;  import org.springframework.beans.factory.InitializingBean;  import org.springframework.core.io.Resource;    import redis.clients.jedis.HostAndPort;  import redis.clients.jedis.JedisCluster;    public class JedisClusterFactory implements FactoryBean<JedisCluster>, InitializingBean {         private JedisCluster jedisCluster;      private Integer timeout;      private Integer maxRedirections;      private GenericObjectPoolConfig genericObjectPoolConfig;      private String clusterList;      @Override      public JedisCluster getObject() throws Exception {          return jedisCluster;      }        @Override      public Class<? extends JedisCluster> getObjectType() {          return (this.jedisCluster != null ? this.jedisCluster.getClass() : JedisCluster.class);      }        @Override      public boolean isSingleton() {          return true;      }           private Set<HostAndPort> parseHostAndPort() throws Exception {try {Set<HostAndPort> haps = new HashSet<HostAndPort>();String[] clusterListArray = clusterList.split(",");for (String hostport : clusterListArray) {String[] ipAndPort = hostport.split(":");HostAndPort hap = new HostAndPort(ipAndPort[0], Integer.parseInt(ipAndPort[1]));haps.add(hap);}return haps;} catch (IllegalArgumentException ex) {ex.printStackTrace();throw ex;} catch (Exception ex) {ex.printStackTrace();throw new Exception("解析 jedis 配置文件失败", ex);          @Override      public void afterPropertiesSet() throws Exception {          Set<HostAndPort> haps = this.parseHostAndPort();                    jedisCluster = new JedisCluster(haps, timeout, maxRedirections,genericObjectPoolConfig);                }      public void setTimeout(int timeout) {          this.timeout = timeout;      }        public void setMaxRedirections(int maxRedirections) {          this.maxRedirections = maxRedirections;      }     public void setClusterList(String clusterList) {this.clusterList = clusterList;}      public void setGenericObjectPoolConfig(GenericObjectPoolConfig genericObjectPoolConfig) {          this.genericObjectPoolConfig = genericObjectPoolConfig;      }    }  

到此配置完成
使用时,直接注入即可, 如下所示:
 
@Autowired
JedisCluster jedisCluster;