zoukankan      html  css  js  c++  java
  • jedispool资源释放

    我的天啊,这几天要被jedis逼疯了,网上好多资料并没有介绍jedis链接释放不了的方法,我确定他们那些老人肯定知道都,就是不说,你们说气人不。还有要吐槽哈jedis源码开发的那些家伙,怎么写的代码,连注释都没有,所以已后啊,程序员们,一定要写注释,好好的,坑人啊,好了,发泄发了,干正事!!!!

    之前我写过spring   之jedis操作redis主从,在clinetConn类有个方法close(),这个方法有点问题,也是我要说的。

    jedis.close();

    jedispool.returnBrokenResource();

    jedispool.returnResource();

    jedis.quit();

    jedis.disconnection();

    以上这几个方法吧都是有关释放资源的,别的版本的jedis我不知道,jedis-2.9以上的版本已经使用了jedis.close();下面看看2.9以上版本的close()方法

    public void close() {
    if (dataSource != null) {
    if ( client.isBroken()) {
    this.dataSource.returnBrokenResource(this);
    } else {
    this.dataSource.returnResource(this);
    }
    } else {
     client.close();
    }
    }

    看到了吧,jedis2.9以上的版本的close方法把  jedispool.returnBrokenResource();jedispool.returnResource()包括了,所以直接jedis.close()就可以释放连接了,但是有点肯爹的是,如果你在使用redis的时侯,想要close(),就不能释放,所以你先要退出client,就要用jedis.quit(),这样就完事了,有网上的资料是:

    public void close(jedis){

     //.....

      jedis.quit();

      jedis.disconnection();

      

    }

    //完了发现使用了jedis.disconnection();之后,jedis又可以链接redis了,而且可以操作redis,

    然后请看jedis.disconnection()的源码

    public void disconnect() {
    if (isConnected()) {
    try {
    outputStream.flush();
    socket.close();
    } catch (IOException ex) {
    broken = true;
    throw new JedisConnectionException(ex);
    } finally {
    IOUtils.closeQuietly(socket);
    }
    }
    }

    红色标记的代码,看看这儿http://blog.csdn.net/cwmbecoming/article/details/3265343,所以返回资源的方法如下:

    public void closeJedisPool(Jedis jedis,int flag) {
    // System.out.println(Client.isBroken());
    if(flag==0){
    jedis.close();
    if(jedis.isConnected()){

    try{
    System.out.println("退出"+jedis.toString()+":"+jedis.quit());
    jedis.disconnect();
    }catch(Exception e){
    System.out.println("退出失败");
    e.printStackTrace();
    }

    }
    jedis.close();
    }

  • 相关阅读:
    史上不全 ——LINQ to SQL语句
    asp.net mvc 5 后台操作
    asp.netmvc 前台基本控件操作
    ef6+asp.net MVC5+bootstrap3
    个人改造方法调用接口文档
    mvc开发过程中遇到的一些小问题修改
    FileUpload1 在部分浏览器中实现多选
    时间字段 输入空值显示为1900-1-1的解决办法,在asp.net 后台处理
    ASP.NET-C#中字符串操作
    保留多行文本框的换行与空格样式,并转义HTML标记的尖括号
  • 原文地址:https://www.cnblogs.com/zhaohaidong/p/6651557.html
Copyright © 2011-2022 走看看