irpas技术客

jedis 报 :Attempting to read from a broken connection_伏建民

网络 5537

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(); } }


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #jedis # #attempting #To #read #from #a #Broken