spring集成 JedisCluster 连接 redis3.0 集群

maven依赖:


	redis.clients
	jedis
	2.8.0

增加spring 配置

  
          
          
          
          
  
  
  
      
    
     
    
 

增加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, 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 getObjectType() {  
        return (this.jedisCluster != null ? this.jedisCluster.getClass() : JedisCluster.class);  
    }  
  
    @Override  
    public boolean isSingleton() {  
        return true;  
    }  
  
  
  
   	private Set parseHostAndPort() throws Exception {
		try {
			Set haps = new HashSet();
			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 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;


你可能感兴趣的:(java,spring,架构)