jedis 报 :Attempting to read from a broken connection

jedis 报错   Attempting to read from a broken connection  
   排查原因,可能是线程并发导致的报错

解决:添加同步代码块

@Override
public List<HsData> queryByPipeline(List<String> keys)
{
    List<HsData> hsDatas = new ArrayList<>();
    //boolean result = false;
    boolean borroworoprsuccess = true;
    try
    {
        synchronized (this) {
        if (null==jedisNew){
            jedisNew = JedisPoolUtil.getJedis();//jedisPool.getResource();//换成了jedis连接池的方式
        }
        Pipeline pipeline=jedisNew.pipelined();
        List<Response<String>> responses = new ArrayList<>();
        for (String key:keys) {
            Response<String> string = pipeline.get(key);
            responses.add(string);
        }

        pipeline.sync();

        pipeline.close();
        //jedis.close();
        for (Response<String> stringResponse:responses){
            if (null!=stringResponse.get()) {
                hsDatas.add(JSONObject.toJavaObject(JSONObject.parseObject(stringResponse.get()), HsData.class));
            }
        }
        }
        LOGGER.info("======>:jedis调用完成一次=========>");
        return hsDatas;
    }
    catch (Exception ex){
      //如果jedis报错就重新创建jedis
        JEDISESTIME=true;
        //释放redis对象
        jedisNew.close();
       // ex.printStackTrace();
        LOGGER.info("======>:jedis报错"+ex.getMessage());
        //jedis.close();
    }finally {
            JedisPoolUtil.returnResource(jedisPool,jedisNew,JEDISESTIME);
    }
    return hsDatas;
}

重新创建jedis

/*** <p>Description: 返回资源 </p>
 * @author wenquan
 * @date  2017年1月5日
 * @param
 */
public static void returnResource(JedisPool pool, Jedis jedisNew,Boolean JEDISESTIME) {
    if(JEDISESTIME){
        jedisNew.close();
        LOGGER.info("==================>初始化jedisPool");
        JedisPoolUtil.initJedisPool();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值