acl  3.5.3.0
acl::redis_client类 参考

#include <redis_client.hpp>

+ 类 acl::redis_client 继承关系图:
+ acl::redis_client 的协作图:

Public 成员函数

 redis_client (const char *addr, int conn_timeout=60, int rw_timeout=30, bool retry=true)
 
virtual ~redis_client (void)
 
void set_ssl_conf (sslbase_conf *ssl_conf)
 
void set_password (const char *pass)
 
void set_db (int dbnum)
 
int get_db (void) const
 
const char * get_addr (void) const
 
void set_check_addr (bool on)
 
bool eof (void) const
 
void close (void)
 
socket_streamget_stream (bool auto_connect=true)
 
void set_slice_request (bool on)
 
void set_slice_respond (bool on)
 
const redis_resultrun (dbuf_pool *pool, const string &req, size_t nchildren, int *rw_timeout=NULL)
 
const redis_resultrun (dbuf_pool *pool, const redis_request &req, size_t nchildren, int *rw_timeout=NULL)
 
const redis_resultrun (redis_command *cmd, size_t nchildren, int *rw_timeout=NULL)
 
redis_resultget_objects (socket_stream &conn, dbuf_pool *pool, size_t nobjs)
 
redis_resultget_object (socket_stream &conn, dbuf_pool *pool)
 
redis_resultget_error (socket_stream &conn, dbuf_pool *pool)
 
redis_resultget_status (socket_stream &conn, dbuf_pool *pool)
 
redis_resultget_integer (socket_stream &conn, dbuf_pool *pool)
 
redis_resultget_string (socket_stream &conn, dbuf_pool *pool)
 
redis_resultget_array (socket_stream &conn, dbuf_pool *pool)
 
- Public 成员函数 继承自 acl::connect_client
 connect_client (void)
 
virtual ~connect_client ()
 
time_t get_when ()
 
void set_when (time_t when)
 
connect_poolget_pool () const
 
virtual void set_timeout (int conn_timeout, int rw_timeout)
 

Protected 成员函数

bool open (void)
 
- Protected 成员函数 继承自 acl::connect_client
void set_pool (connect_pool *pool)
 
- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

Protected 属性

socket_stream conn_
 
bool check_addr_
 
char * addr_
 
char * pass_
 
bool retry_
 
bool authing_
 
bool slice_req_
 
bool slice_res_
 
int dbnum_
 
sslbase_confssl_conf_
 
- Protected 属性 继承自 acl::connect_client
int conn_timeout_
 
int rw_timeout_
 
time_t when_
 
connect_poolpool_
 

详细描述

redis 客户端对象网络通信类,通过此类将组织好的 redis 请求命令发给 redis 服务端,同时接收 redis 服务端响应结果;该类继承于 connect_client 类,主要 为了使用连接池功能。 redis client network IO class. The redis request is sent to server and the server's respond is handled in this class. The class inherits connect_client, which can use the connection pool function.

在文件 redis_client.hpp27 行定义.

构造及析构函数说明

◆ redis_client()

acl::redis_client::redis_client ( const char *  addr,
int  conn_timeout = 60,
int  rw_timeout = 30,
bool  retry = true 
)

构造函数 constructor

参数
addr{const char*} redis-server 监听地址 the redis-server listening addr
conn_timeout{int} 连接 redis-server 的超时时间(秒) the timeout in seconds to connect the redis-server
rw_timeout{int} 与 redis-server 进行通信的 IO 超时时间(秒) the network IO timeout in seconds with the redis-server

◆ ~redis_client()

virtual acl::redis_client::~redis_client ( void  )
virtual

成员函数说明

◆ close()

void acl::redis_client::close ( void  )

关闭网络连接 close the connection to the redis-server

◆ eof()

bool acl::redis_client::eof ( void  ) const

判断该网络连接对象是否已经关闭 check if the connection has been finish

返回
{bool}

◆ get_addr()

const char* acl::redis_client::get_addr ( void  ) const
inline

获得当前连接的服务器地址,即由 redis_client 构造时传入的地址

返回
{const char*}

在文件 redis_client.hpp81 行定义.

82  {
83  return addr_;
84  }

◆ get_array()

redis_result* acl::redis_client::get_array ( socket_stream conn,
dbuf_pool pool 
)

◆ get_db()

int acl::redis_client::get_db ( void  ) const
inline

获得本连接所选择的 db get db for the connection

返回
{int}

在文件 redis_client.hpp72 行定义.

73  {
74  return dbnum_;
75  }

◆ get_error()

redis_result* acl::redis_client::get_error ( socket_stream conn,
dbuf_pool pool 
)

◆ get_integer()

redis_result* acl::redis_client::get_integer ( socket_stream conn,
dbuf_pool pool 
)

◆ get_object()

redis_result* acl::redis_client::get_object ( socket_stream conn,
dbuf_pool pool 
)

◆ get_objects()

redis_result* acl::redis_client::get_objects ( socket_stream conn,
dbuf_pool pool,
size_t  nobjs 
)

◆ get_status()

redis_result* acl::redis_client::get_status ( socket_stream conn,
dbuf_pool pool 
)

◆ get_stream()

socket_stream* acl::redis_client::get_stream ( bool  auto_connect = true)

获得网络连接流,当连接关闭时内部会自动重连一次 get acl::socket_stream from the connection

参数
auto_connect{bool} 内部是否需要自动连接服务端 if we should connect the redis server automaticlly
返回
{acl::socket_stream*} 如果连接已经关闭则返回 NULL NULL will be returned if the connectioin has been closed

◆ get_string()

redis_result* acl::redis_client::get_string ( socket_stream conn,
dbuf_pool pool 
)

◆ open()

bool acl::redis_client::open ( void  )
protectedvirtual

实现了 acl::connect_client.

◆ run() [1/3]

const redis_result* acl::redis_client::run ( dbuf_pool pool,
const string req,
size_t  nchildren,
int *  rw_timeout = NULL 
)

用于非分片发送方式,向 redis-server 发送请求数据,同时读取并分析 服务端返回的响应数据 send request to redis-server, and read/anlyse response from server, this function will be used for no-slice request mode.

参数
pool{dbuf_pool*} 内存池管理器对象 memory pool manager
req{const string&} 请求数据包 the request package
nchildren{size_t} 响应数据有几个数据对象 the data object number in the server's response data
返回
{const redis_result*} 读到的服务器响应对象,返回 NULL 则出错, 该对象不必手工释放,因为其是在 pool 内存池对象上动态分配的,所以当 释放 pool 时该结果对象一同被释放 the result object from server's response, NULL will be returned when some error happens; the result object needn't be freed manually, which was created in the pool object, and will be freed when the pool were freed.

◆ run() [2/3]

const redis_result* acl::redis_client::run ( dbuf_pool pool,
const redis_request &  req,
size_t  nchildren,
int *  rw_timeout = NULL 
)

用于分片发送请求方式 just for sending proccess in slice request mode

参数
req{const redis_request&} 请求数据对象 request object

◆ run() [3/3]

const redis_result* acl::redis_client::run ( redis_command cmd,
size_t  nchildren,
int *  rw_timeout = NULL 
)

◆ set_check_addr()

void acl::redis_client::set_check_addr ( bool  on)

在进行每个命令处理前,是否要求检查 socket 句柄与地址的匹配情况,当 打开该选项时,将会严格检查匹配情况,但会影响一定性能,因此该设置仅 用在 DEBUG 时的运行场景

参数
on{bool}

◆ set_db()

void acl::redis_client::set_db ( int  dbnum)

设置本连接所对应的 db,当连接建立后如果指定的 db 值大于 0,则内部自动 选择对应的 db,注意:该功能仅针对非集群模式 if db > 0 in no cluster mode, select the db when the connection is created.

参数
dbnum{int}

◆ set_password()

void acl::redis_client::set_password ( const char *  pass)

调用本函数设置连接 redis 服务的连接密码

参数
pass{const char*}

◆ set_slice_request()

void acl::redis_client::set_slice_request ( bool  on)

对于请求数据包,此函数设置在组装请求数据包的时候合成一个数据包发送 just for request package, setting flag for sending data with multi data chunks; this is useful when the request data is large

参数
on{bool} 当为 true 时则不会将请求数据合成一个数据包发送 if true the request data will not be combined one package

◆ set_slice_respond()

void acl::redis_client::set_slice_respond ( bool  on)

对于响应数据包,此函数设置是否将 redis-server 响应的数据分拆成多个数据块, 这对于大的数据包有用处,可以不必一次性分配一个连续性的大内存 just for response package, settint flag for receiving data if split the large response data into multi little chunks

参数
on{bool} 当为 true 时则对响应数据包进行拆分 if true the response data will be splitted into multi little data, which is useful for large reponse data for avoiding malloc large continuously memory from system.

◆ set_ssl_conf()

void acl::redis_client::set_ssl_conf ( sslbase_conf ssl_conf)

设置 SSL 通信方式下的配置句柄,内部缺省值为 NULL,如果设置了 SSL 连 接配置对象,则内部切换成 SSL 通信方式 set SSL communication with Redis-server if ssl_conf not NULL

参数
ssl_conf{sslbase_conf*}

类成员变量说明

◆ addr_

char* acl::redis_client::addr_
protected

在文件 redis_client.hpp181 行定义.

◆ authing_

bool acl::redis_client::authing_
protected

在文件 redis_client.hpp184 行定义.

◆ check_addr_

bool acl::redis_client::check_addr_
protected

在文件 redis_client.hpp180 行定义.

◆ conn_

socket_stream acl::redis_client::conn_
protected

在文件 redis_client.hpp179 行定义.

◆ dbnum_

int acl::redis_client::dbnum_
protected

在文件 redis_client.hpp187 行定义.

◆ pass_

char* acl::redis_client::pass_
protected

在文件 redis_client.hpp182 行定义.

◆ retry_

bool acl::redis_client::retry_
protected

在文件 redis_client.hpp183 行定义.

◆ slice_req_

bool acl::redis_client::slice_req_
protected

在文件 redis_client.hpp185 行定义.

◆ slice_res_

bool acl::redis_client::slice_res_
protected

在文件 redis_client.hpp186 行定义.

◆ ssl_conf_

sslbase_conf* acl::redis_client::ssl_conf_
protected

在文件 redis_client.hpp188 行定义.


该类的文档由以下文件生成: