| 108 | } |
| 109 | |
| 110 | bool redis_client::open() |
| 111 | { |
| 112 | if (conn_.opened()) { |
| 113 | return true; |
| 114 | } |
| 115 | if (!conn_.open(addr_, conn_timeout_, rw_timeout_)) { |
| 116 | logger_error("connect redis %s error: %s", |
| 117 | addr_, last_serror()); |
| 118 | return false; |
| 119 | } |
| 120 | |
| 121 | // ��� SSL ������ǿգ����Զ����� SSL ���� |
| 122 | if (ssl_conf_) { |
| 123 | sslbase_io* ssl = ssl_conf_->create(false); |
| 124 | if (conn_.setup_hook(ssl) == ssl) { |
| 125 | logger_error("open ssl failed, addr=%s", addr_); |
| 126 | ssl->destroy(); |
| 127 | conn_.close(); |
| 128 | return false; |
| 129 | } |
| 130 | } |
| 131 | |
| 132 | // �����������ǿգ������ø������� redis-server ��֤�Ϸ��� |
| 133 | if (pass_ && *pass_) { // && !authing_) |
| 134 | // ���õ�ǰ���ӵ�״̬Ϊ��֤״̬���Ա��������ѭ�� |
| 135 | authing_ = true; |
| 136 | redis_connection connection(this); |
| 137 | if (!connection.auth(pass_)) { |
| 138 | authing_ = false; |
| 139 | conn_.close(); |
| 140 | logger_error("auth error, addr: %s, passwd: %s", |
| 141 | addr_, pass_); |
| 142 | return false; |
| 143 | } |
| 144 | authing_ = false; |
| 145 | } |
| 146 | |
| 147 | if (dbnum_ > 0) { |
| 148 | redis_connection connection(this); |
| 149 | if (!connection.select(dbnum_)) { |
| 150 | conn_.close(); |
| 151 | logger_error("select db error, db=%d", dbnum_); |
| 152 | return false; |
| 153 | } |
| 154 | } |
| 155 | return true; |
| 156 | } |
| 157 | |
| 158 | void redis_client::close() |
| 159 | { |
no test coverage detected