与Spring整合连接redis集群

来源:互联网 发布:md204l软件下载 编辑:程序博客网 时间:2024/05/22 16:49

1、接口封装
常用的操作redis的方法提取出一个接口,分别对应单机版和集群版创建两个实现类。
2、接口定义

public interface JedisClient {    String set(String key, String value);    String get(String key);    Boolean exists(String key);    Long expire(String key, int seconds);    Long ttl(String key);    Long incr(String key);    Long hset(String key, String field, String value);    String hget(String key, String field);    Long hdel(String key, String... field);}

3、单机版实现类

public class JedisClientPool implements JedisClient {    @Autowired    private JedisPool jedisPool;    @Override    public String set(String key, String value) {        Jedis jedis = jedisPool.getResource();        String result = jedis.set(key, value);        jedis.close();        return result;    }    @Override    public String get(String key) {        Jedis jedis = jedisPool.getResource();        String result = jedis.get(key);        jedis.close();        return result;    }    @Override    public Boolean exists(String key) {        Jedis jedis = jedisPool.getResource();        Boolean result = jedis.exists(key);        jedis.close();        return result;    }    @Override    public Long expire(String key, int seconds) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.expire(key, seconds);        jedis.close();        return result;    }    @Override    public Long ttl(String key) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.ttl(key);        jedis.close();        return result;    }    @Override    public Long incr(String key) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.incr(key);        jedis.close();        return result;    }    @Override    public Long hset(String key, String field, String value) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.hset(key, field, value);        jedis.close();        return result;    }    @Override    public String hget(String key, String field) {        Jedis jedis = jedisPool.getResource();        String result = jedis.hget(key, field);        jedis.close();        return result;    }    @Override    public Long hdel(String key, String... field) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.hdel(key, field);        jedis.close();        return result;    }}

4、配置applicationContext-redis.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans4.2.xsd    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context4.2.xsd    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx4.2.xsd    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util4.2.xsd">    <!-- 配置单机版的连接 -->    <bean id="jedisPool" class="redis.clients.jedis.JedisPool">        <constructor-arg name="host" value="192.168.25.153"></constructor-arg>        <constructor-arg name="port" value="6379"></constructor-arg>    </bean>    <bean id="jedisClientPool" class="com.taotao.jedis.JedisClientPool"/></beans>

5、集群版实现类

package com.taotao.jedis;import org.springframework.beans.factory.annotation.Autowired;import redis.clients.jedis.JedisCluster;public class JedisClientCluster implements JedisClient {    @Autowired    private JedisCluster jedisCluster;    @Override    public String set(String key, String value) {        return jedisCluster.set(key, value);    }    @Override    public String get(String key) {        return jedisCluster.get(key);    }    @Override    public Boolean exists(String key) {        return jedisCluster.exists(key);    }    @Override    public Long expire(String key, int seconds) {        return jedisCluster.expire(key, seconds);    }    @Override    public Long ttl(String key) {        return jedisCluster.ttl(key);    }    @Override    public Long incr(String key) {        return jedisCluster.incr(key);    }    @Override    public Long hset(String key, String field, String value) {        return jedisCluster.hset(key, field, value);    }    @Override    public String hget(String key, String field) {        return jedisCluster.hget(key, field);    }    @Override    public Long hdel(String key, String... field) {        return jedisCluster.hdel(key, field);    }}

6、配置applicationContext-redis.xml

<!-- 集群版的配置 -->    <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">        <constructor-arg>            <set>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.25.153"></constructor-arg>                    <constructor-arg name="port" value="7001"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.25.153"></constructor-arg>                    <constructor-arg name="port" value="7002"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.25.153"></constructor-arg>                    <constructor-arg name="port" value="7003"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.25.153"></constructor-arg>                    <constructor-arg name="port" value="7004"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.25.153"></constructor-arg>                    <constructor-arg name="port" value="7005"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.25.153"></constructor-arg>                    <constructor-arg name="port" value="7006"></constructor-arg>                </bean>            </set>        </constructor-arg>    </bean>    <bean id="jedisClientCluster" class="com.taotao.jedis.JedisClientCluster"/>

集群版与单机版不能共存。

7、封装代码测试

@Test    public void testJedisClient() throws Exception {        //初始化Spring容器        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");        //从容器中获得JedisClient对象        JedisClient jedisClient = applicationContext.getBean(JedisClient.class);        jedisClient.set("first", "100");        String result = jedisClient.get("first");        System.out.println(result);    }
原创粉丝点击