您的位置:首页 > 数据库 > Redis

Redis:Could not get a resource from the pool

2017-04-27 15:11 676 查看
项目运行开始几分钟还正常运行,之后就会一直显示 Could not get a resource from the pool

好了很多资料也没有解决办法,最后猜测是不是所有的连接使用一个全局jedis,然后每次jedis=jedisPool.getResource(),然后把jedis改成方法每部局部变量,运行一段时间,没有发生上面的问题

原有代码:

Jedis jedis=null;

public Object get(Object key) {
System.out.println(new Date()+"//get:"+key);
Object obj=null;
try {
jedis = this.getResource();
if(jedis!=null){
jedis.select(DBINDEX);
byte[] value=jedis.get(((String)key).getBytes());
if(value!=null)obj=unserizlize(value);

} catch (Exception e) {
logger.error("【RedisCache】Exception happened when query["+key+"]:"+e);
}finally{
if(null!=jedis) this.returnResource(jedis);
}
return obj;
}

public void put(Object key, Object value) {
try{
jedis = this.getResource();
if(jedis!=null){
jedis.select(DBINDEX);
jedis.set(((String)key).getBytes(), serialize(value));
}
}catch (Exception e) {
logger.error("【RedisCache】Exception happened when save["+key+"]:"+e);
}finally{
if(null!=jedis) this.returnResource(jedis);
}
}
修改之后:

public Object get(Object key) {
Object obj=null;
Jedis jedis=null;
try {
jedis = this.getResource();
if(jedis!=null){
jedis.select(DBINDEX);
byte[] value=jedis.get(((String)key).getBytes());
if(value!=null)obj=unserizlize(value);

} catch (Exception e) {
logger.error("【RedisCache】Exception happened when query["+key+"]:"+e);
}finally{
if(null!=jedis) this.returnResource(jedis);
}
return obj;
}

public void put(Object key, Object value) {
Jedis jedis=null;
try{
jedis = this.getResource();
if(jedis!=null){
jedis.select(DBINDEX);
jedis.set(((String)key).getBytes(), serialize(value));
}
}catch (Exception e) {
logger.error("【RedisCache】Exception happened when save["+key+"]:"+e);
}finally{
if(null!=jedis) this.returnResource(jedis);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐