Jedis(二) Connection类的实现 - wtstengshen/blog-page GitHub Wiki

在Jedis既然是client,就肯定需要和redis server进行socket连接,于是就看了一下Jedis中Connection类的代码实现; ####1,Connection类 Connection从字面意思就可以看出来,是为了建立Socket连接,提供了InputStream和OutputStream的封装,发送和接受redis命令的方法,分的很开,可以让上层代码更加方便的调用;下边看一下里边的Socket是如何建立的;

    if (!isConnected()) {
      try {
        socket = new Socket();
        // 对于处理Time_wait状态下的socket地址可以进行重用
        socket.setReuseAddress(true);
        socket.setKeepAlive(true); // tcp的keepAlive
        socket.setTcpNoDelay(true); // 
        socket.setSoLinger(true, 0); // 
     
        socket.connect(new InetSocketAddress(host, port), connectionTimeout);
        socket.setSoTimeout(soTimeout);
        outputStream = new RedisOutputStream(socket.getOutputStream());
        inputStream = new RedisInputStream(socket.getInputStream());
      } catch (IOException ex) {
        broken = true;
        throw new JedisConnectionException(ex);
      }
    }