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(); 
  }
jedispool资源释放的更多相关文章
- 基于webrtc的资源释放问题(二)
		
基于webrtc的资源释放问题(二) ——建立连接的过程中意外中断 应用背景: 我们在打电话的时候会不会遇到这种情况?打电话的时候未接通之前挂掉了电话,或者在接通之后建立的连接的过程中挂掉电话? 特别 ...
 - 基于webrtc的资源释放问题(一)
		
基于webrtc的资源释放问题(一) ——重复释放webrtc的相关资源 背景: 视频通讯大都只是作为一个功能存在于各种应用中,比如微信,qq .既然只是应用的一部分,这样就涉及反复的开启和关闭视频通 ...
 - C#资源释放
		
转自:http://www.cnblogs.com/psunny/archive/2009/07/07/1518812.html 深刻理解C#中资源释放 今天我的一个朋友看到我写的那篇<C#中用 ...
 - TList,TObjectList 使用——资源释放
		
TOjectList = Class (Tlist); TOjectList继承Tlist,从名字上看就可以知道它是专门为对象列表制作的,那么他到底丰富了那些功能呢? 首先是 TObject 作为对象 ...
 - Delphi中关于资源释放(Free,Relealse,FreeAndNil)
		
根据日常编程经验,得出一些Delphi中关于资源释放的体会. 假如有对象Obj为TObject类型: 1) Obj.Free直接释放资源后,调用OnDestroy事件,但是没有将Obj指针值置为Nil ...
 - 深刻理解C#中资源释放
		
今天我的一个朋友看到我写的那篇<C#中用AJAX验证用户登录>时,给我指出了点小毛病.就是在用户登录时,如果用户登录失败,在下面这段代码中,都会new出来一个User对象,如果连续登录失败 ...
 - Unity3d: 资源释放时存储空间不足引发的思考和遇到的问题
		
手机游戏第一次启动基本上都会做资源释放的操作,这个时候需要考虑存储空间是否足够,但是Unity没有自带获取设备存储空间大小的 接口,需要调用本地方法分别去android或ios获取,这样挺麻烦的.而且 ...
 - .net 资源释放(托管资源和非托管资源)
		
1.托管资源 像int.float.DateTime等都是托管资源:net中80%的资源都是托管资源: 托管资源的回收通过GC(垃圾回收器)自动释放分配给该对象的内存,但无法预测进行垃圾回收的时间,我 ...
 - C#资源释放及Dispose、Close和析构方法
		
https://www.cnblogs.com/luminji/archive/2011/01/05/1926468.html C#资源释放及Dispose.Close和析构方法 备注:此文的部分 ...
 
随机推荐
- 20165318 2017-2018-2《Java程序设计》课程总结
			
20165318 2017-2018-2<Java程序设计>课程总结 一.每周作业链接汇总 每周作业链接汇总 预备作业1:我期望的师生关系 预备作业2:C语言基础调查和java学习展望 预 ...
 - javascript实现百度地图鼠标滑动事件显示、隐藏
			
其实现思路是给label设置样式,我们来看下具体做法吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var label = new BMap.Labe ...
 - 【2018暑假集训模拟一】Day1题解
			
T1准确率 [题目描述] 你是一个骁勇善战.日刷百题的OIer. 今天你已经在你OJ 上提交了y 次,其中x次是正确的,这时,你的准确率是x/y.然而,你最喜欢一个在[0; 1] 中的有理数p/q(是 ...
 - __init__函数
			
初始化函数,类似于c++的构造函数 在创建一个对象时默认被调用,不需要手动调用.self后面接的形参,在类实例化的时候必须传递,__init__函数里的参数都属于成员变量
 - Kafka设计解析(二十一)关于Kafka幂等producer的讨论
			
转载自 huxihx,原文链接 关于Kafka幂等producer的讨论 众所周知,Kafka 0.11.0.0版本正式支持精确一次处理语义(exactly once semantics,下称EOS) ...
 - Android调用系统的发邮件功能
			
package com.example.myapi.email; import java.util.ArrayList; import java.util.List; import android.c ...
 - 20155325 Exp9 Web安全基础
			
本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击 ...
 - [FQ]Tor + Chrome + PAC 尝试 FQ
			
记录一次比较成功的FQ经历 1.从Tor官网下载最新的Tor browser,速度较慢可以从文末给出的链接中下载. 2.安装Tor browser. 3. Tor网络设置 3.1 那个描述与你的情况最 ...
 - 蓝牙inquiry流程之Inquiry Complete处理
			
inquiry流程一般持续有12s多,当inquiry完成的时候,设备端会上报一个Event: Inquiry Complete 上来,那协议栈是如何把这个事件上传到应用层的呢?本篇文章来分析一下其具 ...
 - spring cloud资料汇总
			
https://www.cnblogs.com/Java3y/p/9540386.html#commentform --非常好的文章,里面还有海量学习资料