private void connect(String host, int port, String password) {
    	// Close current
    	if (connection != null) {
			try { this.close(); } catch (Exception cause) { /* nothing */ }
    	}
    	synchronized (lock) {
    		active = true;
    		new RedisConnectionThread(host, port, lock).start();
    		// waite channel open
    		if (LOGGER.isDebugEnabled()) {
				LOGGER.debug("[Redis][Connect][waite connection open...]");
			}
			try { lock.wait(); } catch (Exception cause) { /* nothing */ }
			if (LOGGER.isDebugEnabled()) {
				LOGGER.debug("[Redis][Connect][connection opened]");
			}
			// waite session open and auth
			if (LOGGER.isDebugEnabled()) {
				LOGGER.debug("[Redis][Connect][waite session open...]");
			}
			try { lock.wait(); } catch (Exception cause) { /* nothing */ }
			if (LOGGER.isDebugEnabled()) {
				if (connection == null) {	// session open failed
					LOGGER.error("[Redis][Connect][session open failed...]");
				} else {
					LOGGER.debug("[Redis][Connect][session opened]");
				}
			}
		}
    }