redis 使用jedispool 获取连接异常问题!Could not get a resource from the pool大侠们看看,是哪里的问题!谢谢JedisUtil代码如下:public class JedisUtil {
private Logger log = Logger.getLogger(this.getClass());
/**缓存生存时间 */
private final int expire = 60000;
/** 操作Key的方法 */
public Keys KEYS;
/** 对存储结构为String类型的操作 */
public Strings STRINGS;
/** 对存储结构为List类型的操作 */
public Lists LISTS;
/** 对存储结构为Set类型的操作 */
public Sets SETS;
/** 对存储结构为HashMap类型的操作 */
public Hash HASH;
/** 对存储结构为Set(排序的)类型的操作 */
public SortSet SORTSET;
private static JedisPool jedisPool = null;
private JedisUtil() {
}
static {
if (jedisPool == null) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(JRedisPoolConfig.MAX_ACTIVE);
config.setMaxIdle(JRedisPoolConfig.MAX_IDLE);
config.setMaxWait(JRedisPoolConfig.MAX_WAIT);
config.setTestOnBorrow(JRedisPoolConfig.TEST_ON_BORROW);
config.setTestOnReturn(JRedisPoolConfig.TEST_ON_RETURN);
jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP, JRedisPoolConfig.REDIS_PORT);
}
}
public JedisPool getPool() {
return jedisPool;
}
/**
* 从jedis连接池中获取获取jedis对象
* @return
*/
public Jedis getJedis() {
return jedisPool.getResource();
}
private static final JedisUtil jedisUtil = new JedisUtil();
/**
* 获取JedisUtil实例
* @return
*/
public static JedisUtil getInstance() {
return jedisUtil;
} /**
* 回收jedis
* @param jedis
*/
public void returnJedis(Jedis jedis) {
jedisPool.returnResource(jedis);
}
/**
* 设置过期时间
*
* @author ruan 2013-4-11
* @param key
* @param seconds
*/
public void expire(String key, int seconds) {
if (seconds <= 0) {
return;
}
Jedis jedis = getJedis();
jedis.expire(key, seconds);
returnJedis(jedis);
} /**
* 设置默认过期时间
*
* @author ruan 2013-4-11
* @param key
*/
public void expire(String key) {
expire(key, expire);
}
//*******************************************Keys*******************************************//
public class Keys { /**
* 清空所有key
*/
public String flushAll() {
Jedis jedis = getJedis();
String stata = jedis.flushAll();
returnJedis(jedis);
return stata;
} /**
* 更改key
*
* @param String
* oldkey
* @param String
* newkey
* @return 状态码
* */
public String rename(String oldkey, String newkey) {
return rename(SafeEncoder.encode(oldkey),
SafeEncoder.encode(newkey));
}
}
}JRedisPoolConfig代码如下:
public class JRedisPoolConfig {
//控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
public static final int MAX_ACTIVE=StringUtil.getInt(PropertiesUtil.getUrl("redis.pool.maxActive", "redis"));
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
public static final int MAX_IDLE =StringUtil.getInt(PropertiesUtil.getUrl("redis.pool.maxIdle", "redis"));
//表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
public static final long MAX_WAIT=StringUtil.getLong(PropertiesUtil.getUrl("redis.pool.maxWait", "redis"));
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
public static final boolean TEST_ON_BORROW=StringUtil.getBoolean(PropertiesUtil.getUrl("redis.pool.testOnBorrow", "redis"));
//在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;
public static final boolean TEST_ON_RETURN=StringUtil.getBoolean(PropertiesUtil.getUrl("redis.pool.testOnReturn", "redis"));
//IP
public static final String REDIS_IP=PropertiesUtil.getUrl("redis.ip", "redis");
//Port
public static final int REDIS_PORT=StringUtil.getInt(PropertiesUtil.getUrl("redis.port", "redis"));
//Password
public static final String REDIS_PASSWORD=PropertiesUtil.getUrl("redis.password", "redis");
}redisjedisjedispoolresourcejredis
private Logger log = Logger.getLogger(this.getClass());
/**缓存生存时间 */
private final int expire = 60000;
/** 操作Key的方法 */
public Keys KEYS;
/** 对存储结构为String类型的操作 */
public Strings STRINGS;
/** 对存储结构为List类型的操作 */
public Lists LISTS;
/** 对存储结构为Set类型的操作 */
public Sets SETS;
/** 对存储结构为HashMap类型的操作 */
public Hash HASH;
/** 对存储结构为Set(排序的)类型的操作 */
public SortSet SORTSET;
private static JedisPool jedisPool = null;
private JedisUtil() {
}
static {
if (jedisPool == null) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(JRedisPoolConfig.MAX_ACTIVE);
config.setMaxIdle(JRedisPoolConfig.MAX_IDLE);
config.setMaxWait(JRedisPoolConfig.MAX_WAIT);
config.setTestOnBorrow(JRedisPoolConfig.TEST_ON_BORROW);
config.setTestOnReturn(JRedisPoolConfig.TEST_ON_RETURN);
jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP, JRedisPoolConfig.REDIS_PORT);
}
}
public JedisPool getPool() {
return jedisPool;
}
/**
* 从jedis连接池中获取获取jedis对象
* @return
*/
public Jedis getJedis() {
return jedisPool.getResource();
}
private static final JedisUtil jedisUtil = new JedisUtil();
/**
* 获取JedisUtil实例
* @return
*/
public static JedisUtil getInstance() {
return jedisUtil;
} /**
* 回收jedis
* @param jedis
*/
public void returnJedis(Jedis jedis) {
jedisPool.returnResource(jedis);
}
/**
* 设置过期时间
*
* @author ruan 2013-4-11
* @param key
* @param seconds
*/
public void expire(String key, int seconds) {
if (seconds <= 0) {
return;
}
Jedis jedis = getJedis();
jedis.expire(key, seconds);
returnJedis(jedis);
} /**
* 设置默认过期时间
*
* @author ruan 2013-4-11
* @param key
*/
public void expire(String key) {
expire(key, expire);
}
//*******************************************Keys*******************************************//
public class Keys { /**
* 清空所有key
*/
public String flushAll() {
Jedis jedis = getJedis();
String stata = jedis.flushAll();
returnJedis(jedis);
return stata;
} /**
* 更改key
*
* @param String
* oldkey
* @param String
* newkey
* @return 状态码
* */
public String rename(String oldkey, String newkey) {
return rename(SafeEncoder.encode(oldkey),
SafeEncoder.encode(newkey));
}
}
}JRedisPoolConfig代码如下:
public class JRedisPoolConfig {
//控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
public static final int MAX_ACTIVE=StringUtil.getInt(PropertiesUtil.getUrl("redis.pool.maxActive", "redis"));
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
public static final int MAX_IDLE =StringUtil.getInt(PropertiesUtil.getUrl("redis.pool.maxIdle", "redis"));
//表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
public static final long MAX_WAIT=StringUtil.getLong(PropertiesUtil.getUrl("redis.pool.maxWait", "redis"));
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
public static final boolean TEST_ON_BORROW=StringUtil.getBoolean(PropertiesUtil.getUrl("redis.pool.testOnBorrow", "redis"));
//在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;
public static final boolean TEST_ON_RETURN=StringUtil.getBoolean(PropertiesUtil.getUrl("redis.pool.testOnReturn", "redis"));
//IP
public static final String REDIS_IP=PropertiesUtil.getUrl("redis.ip", "redis");
//Port
public static final int REDIS_PORT=StringUtil.getInt(PropertiesUtil.getUrl("redis.port", "redis"));
//Password
public static final String REDIS_PASSWORD=PropertiesUtil.getUrl("redis.password", "redis");
}redisjedisjedispoolresourcejredis
解决方案 »
- 帮忙个啊。。。
- onbeforeunload 事件控制问题
- spring security 配置看不明,求助!!!
- 急!!!lucene中 queryparser的问题
- <%@include file=""%>和<jsp:include>哪个速度快些?
- hibernate 的奇怪问题,请教
- 哪有JBulider下载?
- 关于struts中DynaActionForm的问题
- 请教,我该如何在weblogic 上 部署EJB ?
- hibernate字段映射到数据库后的名称如何修改?
- spring data jpa 事务问题 Executing an update/delete query
- 求助下子~有知道怎么解决的嘛?hibernate本来还用的好好的 突然就报这个错了 编译器的myeclipse 求大牛
忘记设置密码了!
jedisPool = new JedisPool(config, "192.168.0.117", 6379,
10000,"password");