Spring整合Jedis2.9(集群带密码版)

一.环境说明

  • Windows 10 1709
  • IDEA 2017.3
  • Spring 4.3.12
  • Jedis 2.9

二.配置文件



<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    
    <context:property-placeholder location="classpath:spring/applicationContextRedis.xml"/>

    
    <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="100000"/>
        
        <property name="softMinEvictableIdleTimeMillis" value="10000"/>
        
        <property name="maxWaitMillis" value="1500"/>
        
        <property name="testOnBorrow" value="false"/>
        
        <property name="testWhileIdle" value="true"/>
        
        <property name="blockWhenExhausted" value="false"/>
    bean>


    
    <bean id="jedisCuster" class="redis.clients.jedis.JedisCluster">
        <constructor-arg name="jedisClusterNode">
            
            <set>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${redis.host}"/>
                    <constructor-arg name="port" value="${redis.port1}"/>
                bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${redis.host}"/>
                    <constructor-arg name="port" value="${redis.port2}"/>
                bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${redis.host}"/>
                    <constructor-arg name="port" value="${redis.port3}"/>
                bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${redis.host}"/>
                    <constructor-arg name="port" value="${redis.port4}"/>
                bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${redis.host}"/>
                    <constructor-arg name="port" value="${redis.port5}"/>
                bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${redis.host}"/>
                    <constructor-arg name="port" value="${redis.port6}"/>
                bean>
            set>
        constructor-arg>
        
        <constructor-arg name="connectionTimeout" value="${redis.timeout}"/>
        
        <constructor-arg name="soTimeout" value="${redis.soTimeout}"/>
        
        <constructor-arg name="password" value="${redis.password}"/>
        
        <constructor-arg name="maxAttempts" value="${redis.attempts}"/>
        
        <constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
    bean>

    
    <bean id="jedisClientCluster" class="xin.csqsx.utils.jedis.JedisClientCluster">
        <property name="jedisCluster" ref="jedisCuster" />
    bean>

beans>

三.JedisClientCluster.class

package xin.csqsx.utils.jedis;

import java.util.List;
import java.util.Map;

import redis.clients.jedis.JedisCluster;

/**
 * 包名 xin.csqsx.utils.jedis
 * 类名 JedisClientCluster
 * 类描述 redis集群操作工具类
 *
 * @author Lucifer
 * @version 1.0
 * 创建日期 2017/11/20
 * 时间 19:39
 */
public class JedisClientCluster implements JedisClient {

    private JedisCluster jedisCluster;


    public JedisCluster getJedisCluster() {
        return jedisCluster;
    }

    public void setJedisCluster(JedisCluster jedisCluster) {
        this.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 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);
    }

    @Override
    public Boolean hexists(String key, String field) {
        return jedisCluster.hexists(key, field);
    }

    @Override
    public Map hgetAll(String key) {
        return jedisCluster.hgetAll(key);
    }

    @Override
    public List hvals(String key) {
        return jedisCluster.hvals(key);
    }

    @Override
    public Long del(String key) {
        return jedisCluster.del(key);
    }

}

四.JedisClient.java

package xin.csqsx.utils.jedis;

import java.util.List;
import java.util.Map;

/**
 * 包名 xin.csqsx.utils.jedis
 * 类名 JedisClient
 * 类描述 jedis操作redis集群的相关操作
 *
 * @author Lucifer
 * @version 1.0
 * 创建日期 2017/11/20
 * 时间 15:54
 */
public interface JedisClient {
    /**
     * 设置一个字符串类型的值,如果记录存在则覆盖原有value
     *
     * @param key   值对应的键
     * @param value 值
     * @return 状态码, 成功则返回OK
     */
    String set(String key, String value);

    /**
     * 从redis中根据key取值
     *
     * @param key 要取得值对应的key
     * @return 取到的value值
     */
    String get(String key);

    /**
     * 判断某个键值对是否存在
     *
     * @param key 根据键判断
     * @return 判断结果
     */
    Boolean exists(String key);

    /**
     * 设置键值对的过期时间
     *
     * @param key     要设置过期时间的k键值对的键
     * @param seconds 过期时间
     * @return 影响的记录数
     */
    Long expire(String key, int seconds);

    /**
     * 查看键值对的剩余时间
     *
     * @param key 要查看的键值对的键
     * @return 剩余时间
     */
    Long ttl(String key);

    /**
     * 添加一个对应关系
     *
     * @param key   存储的键
     * @param field 存储的名字
     * @param value 存储的值
     * @return 状态码, 1成功, 0失败, 如果field已存在将更新, 返回0
     */
    Long hset(String key, String field, String value);

    /**
     * 返回hash中指定存储的值
     *
     * @param key   查找的存储的键
     * @param field 查找的存储的名字
     * @return 指定存储的值
     */
    String hget(String key, String field);

    /**
     * 从hash中删除指定的存储
     *
     * @param key   存储的键
     * @param field 存储的名字
     * @return 状态码, 1成功, 0失败
     */
    Long hdel(String key, String... field);

    /**
     * 检测hash中指定的存储是否存在
     *
     * @param key   存储的键
     * @param field 存储的额名字
     * @return 状态码, 1代表成功, 0代表失败
     */
    Boolean hexists(String key, String field);

    /**
     * 以map的形式返回hash存储的名字和值
     *
     * @param key 存储的键
     * @return 根据key查找到的存储的名字和值
     */
    Map hgetAll(String key);


    /**
     * 获取hash中value的集合
     *
     * @param key hash中存储的键
     * @return 指定键的所有value的集合
     */
    List hvals(String key);

    /**
     * 根据存储的键删除存储
     *
     * @param key 存储的键
     * @return 状态码, 1成功, 0失败
     */
    Long del(String key);
}

2017/11/20
Lucifer

你可能感兴趣的:(记录)