spring 使用redis叢集配置

來源:互聯網
上載者:User

標籤:客戶   not   sql   name   接下來   logger   factory   code   spool   

上面兩篇介紹了redis叢集的配置合一些基本的概念,所以接下來當然是要在項目中使用咯,redis的java支援已經做的非常好了,所以我們來試著使用這些api來進行redis的操作,首先我們需要操作redis的架包:

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

我們需要做的僅僅是在spring設定檔中注入這些基本類,然後自己實現dao,下面是設定檔:

<context:property-placeholder ignore-unresolvable="true" location="classpath:yonyou.properties" />        <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">        <property name="maxTotal" value="1000"/>         <property name="maxIdle" value="10"/>         <property name="minIdle" value="1"/>        <property name="maxWaitMillis" value="30000"/>         <property name="testOnBorrow" value="true"/>         <property name="testOnReturn" value="true"/>         <property name="testWhileIdle" value="true"/>        <!-- <property name="testWhileIdle" value="true"/> -->    </bean>           <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" destroy-method="destroy">        <constructor-arg ref="jedisPoolConfig"/>         <constructor-arg>
      <!--如果以後需要擴充叢集,只需要複製一份redis,修改連接埠,然後在這裡配置即可--> <list> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="127.0.0.1"/> <constructor-arg index="1" value="6379"/> <constructor-arg index="2" value="instance:01"/> </bean> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="127.0.0.1"/> <constructor-arg index="1" value="6380"/> <constructor-arg index="2" value="instance:02"/> </bean> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="127.0.0.1"/> <constructor-arg index="1" value="6381"/> <constructor-arg index="2" value="instance:03"/> </bean> </list> </constructor-arg> </bean> <!--java幫我們同步sentinel的資訊,將主從資訊同步到用戶端來--> <bean class="redis.clients.jedis.JedisSentinelPool"> <constructor-arg index="0" value="mymaster"/> <constructor-arg index="1"> <set> <value>127.0.0.1:26379</value> </set> </constructor-arg> <constructor-arg index="2" ref="jedisPoolConfig"/> </bean>

上面配置好了以後,我們就相當於將redis叢集給映射過來了,下來我們只需要做一些操作,涉及到資料的CRUD.

package com.yonyou.hotusm.module.nosql.redis;import redis.clients.jedis.ShardedJedis;//這個介面是操作sharedJedispublic interface RedisDataSource {        public abstract ShardedJedis getRedisClient();    public void returnResource(ShardedJedis shardedJedis);    public void returnResource(ShardedJedis shardedJedis,boolean broken);}

實現:

package com.yonyou.hotusm.module.nosql.redis;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import redis.clients.jedis.ShardedJedis;import redis.clients.jedis.ShardedJedisPool;@Repository("redisDataSource")public class RedisDataSourceImpl implements RedisDataSource {    private static final Logger log = LoggerFactory.getLogger(RedisDataSourceImpl.class);    @Autowired    private ShardedJedisPool    shardedJedisPool;    public ShardedJedis getRedisClient() {        try {            ShardedJedis shardJedis = shardedJedisPool.getResource();            return shardJedis;        } catch (Exception e) {            log.error("getRedisClent error", e);        }        return null;    }    public void returnResource(ShardedJedis shardedJedis) {        shardedJedisPool.close();        //shardedJedisPool.returnResource(shardedJedis);    }    public void returnResource(ShardedJedis shardedJedis, boolean broken) {        if (broken) {            shardedJedisPool.close();            //shardedJedisPool.returnBrokenResource(shardedJedis);        } else {            shardedJedisPool.close();            //shardedJedisPool.returnResource(shardedJedis);        }    }}

 下面就是操作jedis的具體類了:

@Repository("jedisTemplate")public class JedisTemplate {    private static final Logger log = LoggerFactory.getLogger(JedisTemplate.class);    @Autowired    private RedisDataSource     redisDataSource;    public void disconnect() {        ShardedJedis shardedJedis = redisDataSource.getRedisClient();        shardedJedis.disconnect();    }    /**     * 設定單個值     *      * @param key     * @param value     * @return     */    public String set(String key, String value) {        String result = null;        ShardedJedis shardedJedis = redisDataSource.getRedisClient();        if (shardedJedis == null) {            return result;        }        boolean broken = false;        try {            result = shardedJedis.set(key, value);        } catch (Exception e) {            e.printStackTrace();            log.error(e.getMessage(), e);            broken = true;        } finally {            redisDataSource.returnResource(shardedJedis, broken);        }        return result;    }    /**     * 擷取單個值     *      * @param key     * @return     */    public String get(String key) {        String result = null;        ShardedJedis shardedJedis = redisDataSource.getRedisClient();        if (shardedJedis == null) {            return result;        }        boolean broken = false;        try {            result = shardedJedis.get(key);        } catch (Exception e) {            log.error(e.getMessage(), e);            broken = true;        } finally {            redisDataSource.returnResource(shardedJedis, broken);        }        return result;    }

真正的還有很多操作,list,set,雜湊什麼的,我就不把代碼貼出來了,看看api就知道了

spring 使用redis叢集配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.