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
解决方案 »
- 插入数据发生异常:You have an error in your SQL syntax; check the manual that corresponds
- cookie 实现跨域(localhost和本机ip)??
- DES加密错误(java.security.NoSuchAlgorithmException: Cannot find any provider suppor)
- 奇怪了。plsql执行没问题,放到java里就不行
- spring与hibernate整合的问题!
- SSH整合错误
- JAVA菜鸟救助.
- 请问是什么问题?如何解决?
- 调用EJBSELECT方法时出错,请大家给LOOK一下,我调了半天也没有搞定
- Hibernate映射文件配置主键生成策略问题
- spring data jpa 事务问题 Executing an update/delete query
- 求助下子~有知道怎么解决的嘛?hibernate本来还用的好好的 突然就报这个错了 编译器的myeclipse 求大牛
忘记设置密码了!
jedisPool = new JedisPool(config, "192.168.0.117", 6379,
10000,"password");