二:redis3.x-cluster集群于spring整合

来源:互联网 发布:好用的网络云盘 编辑:程序博客网 时间:2024/05/21 08:41

本篇主要介绍下redis3.x-cluster集群于spring整合

  • 主要依赖的jar包(spring,junit其他相关的略)
    <dependency>        <groupId>redis.clients</groupId>        <artifactId>jedis</artifactId>        <version>2.9.0</version>    </dependency>    <dependency>        <groupId>org.springframework.data</groupId>        <artifactId>spring-data-redis</artifactId>        <version>1.8.1.RELEASE</version>    </dependency>
  • spring整合redis配置:
<?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-beans-4.0.xsd    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">    <!-- 连接池配置 -->    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">        <!-- 最大连接数 -->        <property name="maxTotal" value="30" />        <!-- 最大空闲连接数 -->        <property name="maxIdle" value="10" />        <!-- 每次释放连接的最大数目 -->        <property name="numTestsPerEvictionRun" value="1024" />        <!-- 释放连接的扫描间隔(毫秒) -->        <property name="timeBetweenEvictionRunsMillis" value="30000" />        <!-- 连接最小空闲时间 -->        <property name="minEvictableIdleTimeMillis" value="1800000" />        <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->        <property name="softMinEvictableIdleTimeMillis" value="10000" />        <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->        <property name="maxWaitMillis" value="1500" />        <!-- 在获取连接的时候检查有效性, 默认false -->        <property name="testOnBorrow" value="true" />        <!-- 在空闲时检查有效性, 默认false -->        <property name="testWhileIdle" value="true" />        <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->        <property name="blockWhenExhausted" value="false" />    </bean>     <!-- jedis客户端单机版     <bean id="redisClient" class="redis.clients.jedis.JedisPool">        <constructor-arg name="host" value="10.133.7.231"></constructor-arg>        <constructor-arg name="port" value="6379"></constructor-arg>        <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>    </bean>-->    <!-- 单机版本 Jedis封装调用     <bean id="cacheManger" class="org.jee.jframework.data.cache.redis.adapter.CacheMangerJedisSingleAdapter">        <constructor-arg name="jedisPool" ref="redisClient"></constructor-arg>    </bean>-->    <!-- jedis集群版配置 -->    <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">        <constructor-arg name="nodes">            <set>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.83.186"></constructor-arg>                    <constructor-arg name="port" value="6379"></constructor-arg>                </bean>                <!-- -->                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.1.136"></constructor-arg>                    <constructor-arg name="port" value="7002"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.1.136"></constructor-arg>                    <constructor-arg name="port" value="7003"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.1.136"></constructor-arg>                    <constructor-arg name="port" value="7004"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.1.136"></constructor-arg>                    <constructor-arg name="port" value="7005"></constructor-arg>                </bean>                <bean class="redis.clients.jedis.HostAndPort">                    <constructor-arg name="host" value="192.168.1.136"></constructor-arg>                    <constructor-arg name="port" value="7006"></constructor-arg>                </bean>            </set>        </constructor-arg>        <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>    </bean>    <!--     <bean id="jedisClient" class="com.ycscm.app.core.redis.impl.JedisClientCluster"></bean>     -->     <!-- 集群环境操作 -->    <bean id="cacheManger" class="com.xx.xx.db.cache.redis.CacheMangerJedisClusterAdapter">       <!--         <constructor-arg name="jedisCluster" ref="jedisCluster" ></constructor-arg>         -->         <property name="jedisCluster" ref="jedisCluster"></property>    </bean></beans>
  • Java缓存操作接口定义
import java.util.Map;/** *  * ClassName: ICacheMangerTarget <br/>  * Function: redis缓存操作接口(适配器). <br/>  * Reason: . <br/>  * date:  <br/>  *  * @author   * @version   * @since JDK 1.8 */public interface ICacheMangerTarget {    /**     * 缓存字符串数据结构-根据key获取值     * @param key     * @return     */    public String getWithkey(String key);    /**     * 缓存字符串数据结构-存储     * @param key     * @param value     * @return     */    public String setKeyValue(String key, String value);    /**     * 缓存字符串数据结构-删除     * @param key     * @return     */    public long delWithkey(String key);    /**     * 缓存Hash(散列)数据结构-获取值     * @param hkey     * @param key     * @return     */    public String getHashWithKey(String hkey, String key);    /**     * 缓存Hash(散列)数据结构-根据hashKey获取所有值     * @param hkey     * @return     */    public Map<String,String> getAllWithHashKey(String hkey);    /**     * 缓存Hash(散列)数据结构-存放值     * @param hkey     * @param key     * @param value     * @return     */    public long setHashKeyValue(String hkey, String key, String value);    /**     *      * setrange:设置失效时间 <br/>      * @author hadoop      * @param hkey     * @param key     * @param value     * @param time 失效时间 秒为单位     * @return      * @since JDK 1.8     */    public String setExpxKeyCache(String key, String value,long timeout);    /**     * 缓存Hash(散列)数据结构-存放值Map     * @param hkey     * @param map     * @return     */    public String setHashKeyValues(String hkey, Map<String,String> map);    /**     * 缓存Hash(散列)数据结构-删除     * @param hkey     * @param key     * @return     */    public long delHashWithKey(String hkey, String key);    /**     *      * setValueByprotostuff:set值通过Protobuff序列化. <br/>      *      * @author hadoop      * @param key     * @param bytes     * @return      * @since JDK 1.8     */    public String setValueByprotostuff(String key ,byte[] bytes);    /**     *      * getValueByprotostuff:获取值通过Protobuff序列化的. <br/>      *      * @author hadoop      * @param key     * @return      * @since JDK 1.8     */    public byte[] getValueByprotostuff(String key);    public long delByprotostuff(String key);}
  • Java操作redis缓存接口实现:
import java.util.Map;import com.xx.xx.db.cache.ICacheMangerTarget;import redis.clients.jedis.JedisCluster;/** *  * 类名称: CacheMangerJedisClusterAdapter <br/>  * 功能描述: 缓存适配器实现-支持redis集群版 <br/>  * 日期: 2017年7月11日 下午8:28:39 <br/>  *  * @author hadoop  * @version   * @since JDK 1.8 */public class CacheMangerJedisClusterAdapter implements ICacheMangerTarget {    private JedisCluster jedisCluster;    public CacheMangerJedisClusterAdapter(){    }    /**     * 构造函数初始化 jedisCluster对象     * @param jedisCluster     */    public CacheMangerJedisClusterAdapter(JedisCluster jedisCluster){        this.jedisCluster = jedisCluster;    }    @Override    public String getWithkey(String key) {        return jedisCluster.get(key);    }    @Override    public String setKeyValue(String key, String value) {        return jedisCluster.set(key, value);    }    @Override    public long delWithkey(String key) {        return jedisCluster.del(key);    }    @Override    public String getHashWithKey(String hkey, String key) {        return jedisCluster.hget(hkey, key);    }    @Override    public Map<String, String> getAllWithHashKey(String hkey) {        return jedisCluster.hgetAll(hkey);    }    @Override    public long setHashKeyValue(String hkey, String key, String value) {        return jedisCluster.hset(hkey, key, value);    }    @Override    public String setHashKeyValues(String hkey, Map<String, String> map) {        return jedisCluster.hmset(hkey, map);    }    @Override    public long delHashWithKey(String hkey, String key) {        return jedisCluster.hdel(hkey, key);    }    public void setJedisCluster(JedisCluster jedisCluster) {        this.jedisCluster = jedisCluster;    }    @Override    public String setExpxKeyCache(String key, String value, long time) {        // TODO Auto-generated method stub        return "";    }    @Override    public String setValueByprotostuff(String key, byte[] bytes) {        // TODO Auto-generated method stub        return null;    }    @Override    public byte[] getValueByprotostuff(String key) {        // TODO Auto-generated method stub        return null;    }    @Override    public long delByprotostuff(String key) {        // TODO Auto-generated method stub        return 0;    }}

redis3.x-cluster集群于spring整合记录到这里,很简单实际使用时结合实际情况改造下

原创粉丝点击