Jedis.close()无法使实例返回JedisPool的问题(jedis旧版本bug)

在项目中出现了使用jedisPool却拿不到jedis的问题,
最后发现是因为从jedisPool中拿出去的实例没有被送回连接池
编写代码测试一下(按理说应该是关闭之后可以重复使用所以能够拿到15次)
但是结果却有点意外
代码

public class JedisUtils {
    private static JedisPoolConfig poolConfig = null;
    private static JedisPool jedisPool = null;
    private static Integer maxTotal = null;
    private static Integer maxIdle = null;
    private static String host = null;
    private static Integer port = null;
    static{
        //设置上限10个
        maxTotal = Integer.parseInt("10");
        maxIdle = Integer.parseInt("10");
        port = Integer.parseInt("6379");
        host = "localhost";
        poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(maxTotal);
        poolConfig.setMaxIdle(maxIdle);

        //设置等待获取连接实例(10秒)
        poolConfig.setMaxWaitMillis(10000);
        jedisPool = new JedisPool(poolConfig,host,port);
    }
    public static Jedis getJedis(){
        Jedis jedis = jedisPool.getResource();
        return jedis;
    }
	//从连接池中拿超出总量的连接
    public static void main(String[] args) {
        for(int i=0;i<15;i++){
            Jedis resource = JedisUtils.getJedis();
            System.out.println(resource);
            resource.close();

        }
    }
}

结果👇在这里插入图片描述
//暂时不清楚为什么调用了close方法却没有返回连接池

更新:原本使用的jedis版本为2.4.2
更换为2.9.2之后测试:
在这里插入图片描述
问题解决

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值