基於spring的多redis資料來源配置

來源:互聯網
上載者:User

spring bean

    <bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig">        <property name="testWhileIdle" value="true" />        <!-- <property name="maxActive" value="${redis.pool.maxActive}" /> -->        <property name="maxTotal" value="${redis.pool.maxTotal}" />        <property name="maxIdle" value="${redis.pool.maxIdle}" />        <!-- <property name="maxWait" value="${redis.pool.maxWait}" /> -->        <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" />        <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />        <property name="testOnReturn" value="${redis.pool.testOnReturn}" />    </bean>    <bean id="jedisPool_xx" class="redis.clients.jedis.JedisPool"        destroy-method="destroy">        <constructor-arg ref="jedisConfig" />        <constructor-arg value="${xx.redis.ip}" />        <constructor-arg type="int" value="${xx.redis.port}" />        <constructor-arg value="100000" type="int" />        <constructor-arg value="${xx.redis.passwd}" />    </bean>    <bean id="jedisPool_yy" class="redis.clients.jedis.JedisPool"        destroy-method="destroy">        <constructor-arg ref="jedisConfig" />        <constructor-arg value="${yy.redis.ip}" />        <constructor-arg type="int" value="${yy.redis.port}" />        <constructor-arg value="100000" type="int" />        <constructor-arg value="${yy.redis.passwd}" />    </bean>    <!-- 將上方配置的jedisPool加入muyilJedisPoolMap,記住Map的Key,代碼中需要通過這個Key進行操作不同redis伺服器 -->    <bean id="mutilJedisPoolMap" class="java.util.HashMap">        <constructor-arg>            <map>                <entry key="xxjedisPool" value-ref="jedisPool_xx" />                <entry key="yyjedisPool" value-ref="jedisPool_yy" />            </map>        </constructor-arg>    </bean>

使用

    @Resource(name = "mutilJedisPoolMap")    public Map<String, JedisPool> mutilJedisPoolMap;    /**     * 方法描述:從串連池擷取jedis對象     */    public Jedis getResource(String redisPoolKey){        logger.debug("[MutilJedisUtil:getResource]: get jedis Resource from Pool...");        Jedis jedis = null;//聲明jedis對象//      int cycleTimes = 0;//出現異常已經迴圈擷取的次數        try{            jedis = mutilJedisPoolMap.get(redisPoolKey).getResource();//從pool中擷取jedis對象            if(jedis == null){                logger.error("[MutilJedisUtil:getResource]:get jedis object failed.message:\n");                return null;            }        }catch (JedisConnectionException ex) {                logger.error("[MutilJedisUtil:getResource]:get jedis object failed.message:\n"+ExceptionUtil.ExceptionToString(ex));            }        //擷取對象如果不為空白則返回        if(jedis != null){            logger.debug("[MutilJedisUtil:getResource]: get jedis Resource from Pool success.");        }else{            logger.error("[MutilJedisUtil:getResource]:get jedis object failed.if redis server is runing,please check the configration and Network connection.");        }        return jedis;    }    /**     * 方法描述:使用完畢後將jedis對象歸還串連池     */    public void returnResource(String redisPoolKey,Jedis jedis){        try{            if(jedis != null)                this.mutilJedisPoolMap.get(redisPoolKey).returnResourceObject(jedis);//歸還對象至pool            logger.debug("[MutilJedisUtil:returnResource]: return jedis Resource to Pool  ...");        }catch(JedisConnectionException ex){            //歸還失敗,強制銷毀該連結            //this.jedisPool.returnResourceObject(jedis);//returnBrokenResource(jedis);            logger.error("[MutilJedisUtil:returnResource]:" + ExceptionUtil.ExceptionToString(ex));        }    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.