<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)

    隨筆分類

    隨筆檔案

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 狠狠久久永久免费观看| 中文字幕人成无码免费视频| 免费在线观看毛片| 在线播放亚洲精品| 国产三级电影免费观看| 色网站在线免费观看| 亚洲国产成人五月综合网| 一级毛片免费一级直接观看| 久久精品夜色噜噜亚洲A∨| j8又粗又长又硬又爽免费视频| 人妻丰满熟妇无码区免费| 亚洲av中文无码乱人伦在线咪咕| 日本免费A级毛一片| 久久久久久久亚洲Av无码| 无遮免费网站在线入口| 亚洲欧美日韩综合俺去了| 国产不卡免费视频| 精品亚洲永久免费精品| 亚洲精品mv在线观看| 成人免费视频88| 成人免费夜片在线观看| 亚洲精品乱码久久久久久| **毛片免费观看久久精品| 亚洲第一男人天堂| 免费A级毛片无码久久版| 二个人看的www免费视频| 亚洲综合激情九月婷婷| 日韩视频在线免费观看| 亚欧乱色国产精品免费视频| 久久亚洲国产精品一区二区| 四虎在线免费视频| 美女18一级毛片免费看| 久久国产亚洲观看| 性感美女视频免费网站午夜| 国产高清对白在线观看免费91| 亚洲高清日韩精品第一区| 日本免费网站在线观看| 无码精品一区二区三区免费视频| 亚洲国产乱码最新视频| 最新亚洲成av人免费看| 青青久在线视频免费观看|