美文网首页
Spring 整合Redis

Spring 整合Redis

作者: TheLights | 来源:发表于2017-05-23 10:16 被阅读34次
接口
package com.util.redis;

/**
 * Redis工具接口
 *
 */
public interface RedisUtils {
    /**
     * 保存
     * 
     * @param key
     *            键
     * @param value
     *            值
     */
    public void set(String key, String value);

    /**
     * 保存并设置存活时间
     * 
     * @param key
     *            键
     * @param value
     *            值
     * @param seconds
     *            存活时间,单位为秒
     */
    public void set(String key, String value, Integer seconds);

    /**
     * 根据key查询
     * 
     * @param key
     *            键
     * @return 值
     */
    public String get(String key);

    /**
     * 删除
     * 
     * @param key
     *            键
     */
    public void del(String key);

    /**
     * 根据key设置存活时间
     * 
     * @param key
     *            键
     * @param seconds
     *           存活时间,单位为秒
     */
    public void expire(String key, Integer seconds);
}
单机版实现类
package com.util.redis.impl;

import org.springframework.beans.factory.annotation.Autowired;

import com.util.redis.RedisUtils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

/**
 * Redis连接池工具类
 * 
 */
public class RedisPool implements RedisUtils {
    @Autowired
    private JedisPool jedisPool;

    @Override
    public void set(String key, String value) {
        Jedis jedis = this.getJedis();
        jedis.set(key, value);
        this.releaseJedis(jedis);
    }

    @Override
    public void set(String key, String value, Integer seconds) {
        Jedis jedis = this.getJedis();
        jedis.set(key, value);
        jedis.expire(key, seconds);
        this.releaseJedis(jedis);
    }

    @Override
    public String get(String key) {
        Jedis jedis = this.getJedis();
        String result = jedis.get(key);
        this.releaseJedis(jedis);
        return result;
    }

    @Override
    public void del(String key) {
        Jedis jedis = this.getJedis();
        jedis.del(key);
        this.releaseJedis(jedis);
    }

    @Override
    public void expire(String key, Integer seconds) {
        Jedis jedis = this.getJedis();
        jedis.expire(key, seconds);
        this.releaseJedis(jedis);
    }

    /**
     * 获取Jedis连接
     * 
     * @return Jedis连接
     */
    public Jedis getJedis() {
        return this.jedisPool.getResource();
    }

    /**
     * 释放Jedis连接
     * 
     * @param jedis
     *            jedis连接
     */
    public void releaseJedis(Jedis jedis) {
        jedis.close();
    }
}
集群版实现类
package com.util.redis.impl;

import org.springframework.beans.factory.annotation.Autowired;

import com.util.redis.RedisUtils;

import redis.clients.jedis.JedisCluster;

/**
 * Redis集群工具类
 * 
 */
public class RedisCluster implements RedisUtils {
    @Autowired
    private JedisCluster jedisCluster;

    @Override
    public void set(String key, String value) {
        this.jedisCluster.set(key, value);
    }

    @Override
    public void set(String key, String value, Integer seconds) {
        this.jedisCluster.set(key, value);
        this.jedisCluster.expire(key, seconds);
    }

    @Override
    public String get(String key) {
        return this.jedisCluster.get(key);
    }

    @Override
    public void del(String key) {
        this.jedisCluster.del(key);
    }

    @Override
    public void expire(String key, Integer seconds) {
        this.jedisCluster.expire(key, seconds);
    }

    /**
     * 获取JedisCluster对象<br/>
     * 可以直接使用它来进行redis操作
     * 
     * @return JedisCluster对象
     */
    public JedisCluster getJedisCluster() {
        return jedisCluster;
    }
}
redis.properties
#redis单机版信息
redis.host=192.168.37.131
redis.port=6379
#redis集群版信息
cluster.host1=192.168.37.131
cluster.port1=7001

cluster.host2=192.168.37.131
cluster.port2=7002

cluster.host3=192.168.37.131
cluster.port3=7003

cluster.host4=192.168.37.131
cluster.port4=7004

cluster.host5=192.168.37.131
cluster.port5=7005

cluster.host6=192.168.37.131
cluster.port6=7006
applicationContext-redis.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        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.xsd">

    <!-- 两种方案:使用jedis连接池(单机版)和jedis集群 -->
    <!-- 注意:如果在注入工具类的时候是按类型注入的话,那么不使用的工具类必须注释掉-->
    <!-- 配置 读取外部properties文件 -->
    <context:property-placeholder location="classpath:resource/*.properties" />
    <!-- 单机版 -->
    <!-- 配置jedis连接池 -->
    <bean class="redis.clients.jedis.JedisPool">
        <constructor-arg name="host" value="${redis.host}" />
        <constructor-arg name="port" value="${redis.port}" />
    </bean>

    <!-- 配置单机版工具类 -->
    <bean class="com.util.redis.impl.RedisPool" />


    <!-- 集群版 -->
    <!-- 配置jedis集群 -->
    <bean class="redis.clients.jedis.JedisCluster">
        <constructor-arg name="nodes">
            <set>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${cluster.host1}" />
                    <constructor-arg name="port" value="${cluster.port1}" />
                </bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${cluster.host2}" />
                    <constructor-arg name="port" value="${cluster.port2}" />
                </bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${cluster.host3}" />
                    <constructor-arg name="port" value="${cluster.port3}" />
                </bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${cluster.host4}" />
                    <constructor-arg name="port" value="${cluster.port4}" />
                </bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${cluster.host5}" />
                    <constructor-arg name="port" value="${cluster.port5}" />
                </bean>
                <bean class="redis.clients.jedis.HostAndPort">
                    <constructor-arg name="host" value="${cluster.host6}" />
                    <constructor-arg name="port" value="${cluster.port6}" />
                </bean>
            </set>
        </constructor-arg>
    </bean>

    <!-- 配置集群版工具类 -->
    <bean class="com.util.redis.impl.RedisCluster" />
</beans>

相关文章

网友评论

      本文标题:Spring 整合Redis

      本文链接:https://www.haomeiwen.com/subject/mqywxxtx.html