接口
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>
网友评论