package com.scd.core;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* 缓存处理器
* @author luoyi
* */
public class RedisHandler {
//Redis服务器IP
private String host;
//Redis的端口号
private int port;
//访问密码
private String password;
//可用连接实例的最大数目,默认值为8;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
//private int MAX_ACTIVE = 1024;
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
private int maxIdle;
//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
private int maxWait;
private int timeOut;
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
private boolean TEST_ON_BORROW = true;
private JedisPool jedisPool = null;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getMaxIdle() {
return maxIdle;
}
public void setMaxIdle(int maxIdle) {
this.maxIdle = maxIdle;
}
public int getMaxWait() {
return maxWait;
}
public void setMaxWait(int maxWait) {
this.maxWait = maxWait;
}
public int getTimeOut() {
return timeOut;
}
public void setTimeOut(int timeOut) {
this.timeOut = timeOut;
}
public void connect()
{
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(maxIdle);
config.setMaxWaitMillis(maxWait);
config.setTestOnBorrow(TEST_ON_BORROW);
if (!password.equals(""))
jedisPool = new JedisPool(config, host, port, timeOut, password);
else
jedisPool = new JedisPool(config, host, port, timeOut);
} catch (Exception e) {
e.printStackTrace();
}
}
public void close()
{
}
/**
* 缓存对象
* @param
* key 键名
* value 缓存对象
* seconds (单位:秒) 过期时间
* */
public void set(String key,Object value,int seconds)
{
Jedis jedis = jedisPool.getResource();
jedis.del(key);
jedis.set(key.getBytes(), BaseUnit.serialize(value),"NX".getBytes(),"EX".getBytes(),seconds);
jedisPool.returnResourceObject(jedis);
}
public void set(String key,String value,int seconds)
{
Jedis jedis = jedisPool.getResource();
jedis.del(key);
jedis.set(key, value,"NX","EX",seconds);
jedisPool.returnResourceObject(jedis);
}
public Object getObject(String key)
{
Jedis jedis = jedisPool.getResource();
byte[] data = jedis.get(key.getBytes());
jedisPool.returnResourceObject(jedis);
return BaseUnit.unserialize(data);
}
public String get(String key)
{
Jedis jedis = jedisPool.getResource();
String val = jedis.get(key);
jedisPool.returnResourceObject(jedis);
return val;
}
}
原文:http://www.cnblogs.com/yangxu6069/p/4844154.html