redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
(2012-08-09 15:48:35)
标签:
redispooljedisexception杂谈 |
分类: redis |
java redis
client的链接问题,报标题中出现的错误主要原因是初始化了一个redispool,没有执行释放操作,有可能你调用释放的操作,但是你在执行释放执行进行了条件判断,直接return,没有执行到释放的操作,我们遇到的就是这种情况。
private static JedisPool
pool;
private static String
host = "127.0.0.1";
private static int port
= 6379;
private static int
timeout = 60 * 1000;
private static int
maxActive = 100;
private static int
maxIdle = 20;
private static long
maxWait = 1000;
public static final int
EXPIRE_TIME = 86400;
private static
org.slf4j.Logger logger_ = org.slf4j.LoggerFactory
.getLogger(RedisClient.class.getName());
public static void
initPool() {
logger_.info("Init Redis Pool [{}]:[{}]", host,
port);
JedisPoolConfig config = new
JedisPoolConfig();
config.setMaxActive(maxActive);
config.setMaxIdle(maxIdle);
config.setMaxWait(maxWait);
config.setTestOnBorrow(false);
pool = new JedisPool(config, host, port,
timeout);// 线程数量限制,IP地址,端口,超时时间
}
public static Jedis
getJedis() {
if (pool == null)
initPool();
return pool.getResource();
}
public
static void returnJedis(Jedis jedis) {
if (jedis != null)
pool.returnResource(jedis);
}
调用jedis client的JedisPool.java
定义一个java的RedisClient
public class RedisClient {
}
------------------------------------------------------------------------------------
Jedis jedis = RedisClient.getJedis();
RedisClient.returnJedis()