昨天开技术交流会,谈到NIO的socket时,我们联想到了redis连接也用的socket,这点我赞同,可是突然某前辈说在完成一个操作后将jedis实例return给jedispool时,会将该实例和redis的连接断开。。。。。。听到这我就郁闷了。
我觉得啊,无论是数据库连接池,还是redis连接池,只要是连接池,它的思想就是事先准备一些连接,供有客户端进行操作的时候可以直接读写,而不需要再次建立连接。因为建立连接是个昂贵的操作,会耗费相当到一部分时间,甚至一次数据读写,大部分的时间都花在了建立连接上前辈的这个结论明显违背了连接池的设计思想,口说无凭,用源码说话。扒了半天源码,终于找到了姑且能作为证据的证据吧:
jedispool的配置项中有TestOnBorrow、TestOnReturn这两个,意思是在borrow和return jedis实例的时候是否要对实例进行检查,以TestOnReturn的为例,方法在redis.clients.jedis.JedisPool的内部类JedisFactory中,