<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    常言笑的家

    Spring, Hibernate, Struts, Ajax, RoR

    redis cluster java client jedisCluster spring集成方法

    1、使用jedis的原生JedisCluster

    spring的applicationContext.xml配置redis的連接、連接池、jedisCluster Bean
         <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                 <property name="locations">
                     <list>
                          <value>classpath:redis.properties</value>
                     </list>
                 </property>
         </bean>

         <!-- redis config start -->
        <!-- redis pool config -->
        <bean id="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig">
            <property name="maxTotal"  value="${redis.maxActive}" />
            <property name="maxIdle"   value="${redis.maxIdle}" />
            <property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
            <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
        </bean>

        <!-- jedisCluster config -->
        <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
            <constructor-arg index="0">
                <set>
                    <bean class="redis.clients.jedis.HostAndPort">
                        <constructor-arg type="String" value="${redis.host1}"/>
                        <constructor-arg type="int" value="${redis.port1}"/>
                    </bean>
                    <bean class="redis.clients.jedis.HostAndPort">
                        <constructor-arg type="String" value="${redis.host2}"/>
                        <constructor-arg type="int" value="${redis.port2}"/>
                    </bean>
                </set>
            </constructor-arg>
            <constructor-arg index="1" ref="genericObjectPoolConfig" />
        </bean>
        <!-- redis config end -->
    redis.properties的配置:
    #redis config
    redis.maxActive=1000
    redis.maxIdle=10
    redis.maxWaitMillis=30000
    redis.testOnBorrow=true

    #redis host and port config
    redis.host1=192.168.1.2
    redis.port1=6379
    redis.host2=192.168.1.2
    redis.port2=6380

    jedisCluster的使用:

    @Autowired
    private JedisCluster jedisClust;
    2、自定義spring工廠類生產jedisCluster

    JedisClusterFactory.java

    package com.www.core.utils;

    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 String address;

        private JedisCluster jedisCluster;
        private Integer timeout;
        private Integer maxRedirections;
        private GenericObjectPoolConfig genericObjectPoolConfig;
        
        private Pattern p = Pattern.compile("^.+[:]\\d{1,5}\\s*$");

        @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 {
                String[] addressArr=address.trim().split(",");
                Set<HostAndPort> haps = new HashSet<HostAndPort>();
                for(String addressStr:addressArr){
                    String[] ipAndPort = addressStr.trim().split(":");
                    HostAndPort hap = new HostAndPort(ipAndPort[0].trim(), Integer.parseInt(ipAndPort[1].trim()));
                    haps.add(hap);
                }
                
                return haps;
            } catch (IllegalArgumentException ex) {
                throw ex;
            } catch (Exception ex) {
                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;
        }



        /**
         * @Param String address to set
         
    */
        public void setAddress(String address) {
            this.address = address;
        }

        public void setGenericObjectPoolConfig(GenericObjectPoolConfig genericObjectPoolConfig) {
            this.genericObjectPoolConfig = genericObjectPoolConfig;
        }

    }
    spring的applicationContext.xml配置redis的連接池和工廠bean
     <!-- redis連接配置 start-->
        
        <bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig" >
                <property name="maxIdle" value="${redis.maxIdle}"/>
                <property name="maxTotal" value="${redis.maxTotal}"/>
                <property name="minIdle" value="${redis.minIdle}" />
        </bean>
        
        <!-- redis連接配置 end-->
        
        <bean id="jedisCluster" class="com.www.core.utils.JedisClusterFactory">
            <property name="address" value="${redis.adress}" />
            <property name="timeout" value="${redis.timeout}" />
            <property name="maxRedirections" value="${redis.maxRedirections}"  />
            <property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" />
        </bean>
    redis.properties配置
    #redis config
    redis.maxTotal=200
    redis.maxIdle=50
    redis.minIdle=10

    #redis host and port config
    redis.adress=192.168.1.2:6379,192.168.1.2:6380,192.168.1.2:6381
    redis.timeout=300000
    redis.maxRedirections=6

    jedisCluster的使用:

    @Autowired
    private JedisCluster jedisCluster;

    posted on 2016-08-07 17:50 常言笑 閱讀(1198) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    My Links

    Blog Stats

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产区男人本色在线观看| 中文字幕不卡亚洲| 亚洲精品福利在线观看| 精品视频在线免费观看| 亚洲熟妇av一区二区三区| 一区二区在线免费视频| 亚洲黄片毛片在线观看| 国产精品高清免费网站| 国产l精品国产亚洲区在线观看| fc2成年免费共享视频18| 丁香五月亚洲综合深深爱| 三上悠亚电影全集免费| 国产成人亚洲综合色影视| 99视频精品全部免费观看| 亚洲精品在线免费观看视频| 一个人看的www在线观看免费| 天堂亚洲国产中文在线| 日韩免费视频播放| 一级毛片免费在线观看网站| 国产日产亚洲系列| 在线免费观看国产| 亚洲综合一区国产精品| 国产免费观看网站| 国产色无码精品视频免费| 成年女人午夜毛片免费看| 青青草免费在线视频| 亚洲欧美第一成人网站7777| 色www永久免费视频| 免费国产va视频永久在线观看| 综合亚洲伊人午夜网 | 中文字幕在线免费看| 亚洲精品线在线观看| 嫩草影院在线免费观看| 亚洲阿v天堂在线2017免费| 亚洲Av无码精品色午夜| 成人免费无码大片A毛片抽搐| 污污视频免费观看网站| 亚洲av无码国产精品夜色午夜 | 亚洲精品123区在线观看| 亚洲第一区精品观看| 69视频在线观看高清免费|