acl  3.5.3.0
redis_client_pool.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../connpool/connect_pool.hpp"
4 
5 #if !defined(ACL_CLIENT_ONLY) && !defined(ACL_REDIS_DISABLE)
6 
7 namespace acl
8 {
9 
10 class sslbase_conf;
11 
12 /**
13  * redis 连接池类,该类继承于 connect_pool,在 connect_pool 定义了通用的有关
14  * TCP 连接池的通用方法。
15  * redis connection pool inherting from connect_pool, which includes
16  * TCP connection pool methods.
17  */
19 {
20 public:
21  /**
22  * 构造函数
23  * constructor
24  * @param addr {const char*} 服务端地址,格式:ip:port
25  * the redis-server's listening address, format: ip:port
26  * @param count {size_t} 连接池的最大连接数限制,如果此值为 0,则连接池
27  * 没有上限限制。
28  * the max connections for each connection pool. there is
29  * no connections limit of the pool when the count is 0.
30  * @param idx {size_t} 该连接池对象在集合中的下标位置(从 0 开始)
31  * the subscript of the connection pool in the connection cluster
32  */
33  redis_client_pool(const char* addr, size_t count, size_t idx = 0);
34 
35  virtual ~redis_client_pool(void);
36 
37  /**
38  * 设置 SSL 通信方式下的配置句柄,内部缺省值为 NULL,如果设置了 SSL 连
39  * 接配置对象,则内部切换成 SSL 通信方式
40  * set SSL communication with Redis-server if ssl_conf not NULL
41  * @param ssl_conf {sslbase_conf*}
42  * @return {redis_client_pool&}
43  */
44  redis_client_pool& set_ssl_conf(sslbase_conf* ssl_conf);
45 
46  /**
47  * 设置连接 redis 服务器的连接密码
48  * @param pass {const char*} 连接密码
49  * @return {redis_client_pool&}
50  */
51  redis_client_pool& set_password(const char* pass);
52 
53  /**
54  * 在非集群模式下,本方法用来设置连接建立后所选择的db
55  * in no-cluster mode, the method is used to select the db after
56  * the connection is created
57  * @param dbnum {int}
58  * @return {redis_client_pool&}
59  */
60  redis_client_pool& set_db(int dbnum);
61 
62  /**
63  * 获得本连接池所对应的db
64  * get the current db of the connections pool
65  * @return {int}
66  */
67  int get_db(void) const
68  {
69  return dbnum_;
70  }
71 
72 protected:
73  /**
74  * 基类纯虚函数: 调用此函数用来创建一个新的连接
75  * virtual function in class connect_pool to create a new connection
76  * @return {connect_client*}
77  */
78  connect_client* create_connect(void);
79 
80 private:
81  char* pass_;
82  int dbnum_;
83  sslbase_conf* ssl_conf_;
84 };
85 
86 } // namespace acl
87 
88 #endif // !defined(ACL_CLIENT_ONLY) && !defined(ACL_REDIS_DISABLE)
#define ACL_CPP_API