acl  3.5.3.0
redis_server.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include <map>
4 #include "../stdlib/string.hpp"
5 #include "redis_command.hpp"
6 
7 #if !defined(ACL_CLIENT_ONLY) && !defined(ACL_REDIS_DISABLE)
8 
9 namespace acl
10 {
11 
12 class ACL_CPP_API redis_server : virtual public redis_command
13 {
14 public:
15  /**
16  * see redis_command::redis_command()
17  */
18  redis_server(void);
19 
20  /**
21  * see redis_command::redis_command(redis_client*)
22  */
24 
25  /**
26  * see redis_command::redis_command(redis_client_cluster*)
27  */
29 
31  redis_server(redis_client_cluster* cluster, size_t max_conns);
32 
34 
35  virtual ~redis_server(void);
36 
37  /////////////////////////////////////////////////////////////////////
38 
39 
40  /**
41  * 执行一个 AOF文件 重写操作。重写会创建一个当前 AOF 文件的体积优化版本;
42  * 即使 BGREWRITEAOF 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在
43  * BGREWRITEAOF 成功之前不会被修改
44  * @return {bool}
45  */
46  bool bgrewriteaof(void);
47 
48  /**
49  * 在后台异步(Asynchronously)保存当前数据库的数据到磁盘,BGSAVE 命令执行之后
50  * 立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)
51  * 继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出;客户端可以通过
52  * LASTSAVE 命令查看相关信息,判断 BGSAVE 命令是否执行成功
53  * @return {bool}
54  */
55  bool bgsave(void);
56 
57  /**
58  * 返回 CLIENT SETNAME 命令为连接设置的名字
59  * @param buf {string&} 存储结果,如果没有设置则为空
60  * @return {bool} 返回 false 则表明没有设置连接名字或出错
61  */
62  bool client_getname(string& buf);
63 
64  /**
65  * 关闭地址为 ip:port 的客户端
66  * @param addr {const char*} 客户端连接地址,格式:ip:port
67  * @return {bool} 是否成功,返回 false 表明连接不存在或出错
68  */
69  bool client_kill(const char* addr);
70 
71  /**
72  * 返回所有连接到服务器的客户端信息和统计数据
73  * @param buf {string&} 存储结果
74  * @return {int} 返回结果数据长度,-1 表示出错
75  */
76  int client_list(string& buf);
77 
78  /**
79  * 为当前连接分配一个名字,该名字会出现在 CLIENT LIST 命令的结果中;
80  * 在 Redis 应用程序发生连接泄漏时,为连接设置名字是一种很好的 debug 手段
81  * @param name {const char*} 连接名字,该名字不需要唯一性
82  * @return {bool} 操作是否成功
83  */
84  bool client_setname(const char* name);
85 
86  /**
87  * 命令用于取得运行中的 Redis 服务器的配置参数
88  * @param parameter {const char*} 配置参数名
89  * @param out {std::map<string, string>&} 存储结果,由 name-value 组成,
90  * 因为 parameter 支持模糊匹配,所以有可能返回的结果集中会有多个参数项
91  * @return {int} 结果 "参数-值" 的个数,-1 表示出错
92  */
93  int config_get(const char* parameter, std::map<string, string>& out);
94 
95  /**
96  * 重置 INFO 命令中的某些统计数据
97  * @return {bool} 重置是否成功
98  */
99  bool config_resetstat(void);
100 
101  /**
102  * 对启动 Redis 服务器时所指定的 redis.conf 文件进行改写
103  * @return {bool} 重写配置是否成功
104  */
105  bool config_rewrite(void);
106 
107  /**
108  * 动态地调整 Redis 服务器的配置而无需重启服务
109  * @param name {const char*} 配置参数名
110  * @param value {const char*} 配置参数值
111  * @return {bool} 是否成功
112  */
113  bool config_set(const char* name, const char* value);
114 
115  /**
116  * 返回当前数据库的 key 的数量
117  * @return {int} 返回 -1 表示出错
118  */
119  int dbsize(void);
120 
121  /**
122  * 清空整个 Redis 服务器的数据(删除所有数据库的所有 key )
123  * @return {bool}
124  * 注:此命令要慎用,以免造成误操作
125  */
126  bool flushall(void);
127 
128  /**
129  * 清空当前数据库中的所有 key
130  * @return {bool}
131  * 注:此命令要慎用,以免造成误操作
132  */
133  bool flushdb(void);
134 
135  /**
136  * 返回关于 Redis 服务器的各种信息和统计数值
137  * @param buf {string&} 存储结果
138  * @return {int} 返回所存储的数据长度
139  */
140  int info(string& buf);
141 
142  /**
143  * 返回关于 Redis 服务器的各种信息和统计数值
144  * @param out {std::map<string, string>&} 存储结果
145  * @return {int} 返回所存储的数据条目数量, -1 表示出错
146  */
147  int info(std::map<string, string>& out);
148 
149  /**
150  * 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
151  * @return {time_t}
152  */
153  time_t lastsave(void);
154 
155  /**
156  * 实时打印出 Redis 服务器接收到的命令,调试用; 调用本命令后可以循环调用下面的
157  * get_command 方法获得服务器收到的命令
158  * @return {bool}
159  */
160  bool monitor(void);
161 
162  /**
163  * 调用 monitor 方法后需要调用本方法获得服务器收到的命令,可以循环调用本方法
164  * 以便于不断地获得服务器收到的命令
165  * @param buf {string&} 存储结果
166  * @return {bool}
167  */
168  bool get_command(string& buf);
169 
170  /**
171  * 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)
172  * 以 RDB 文件的形式保存到硬盘
173  * @return {bool}
174  */
175  bool save(void);
176 
177  /**
178  * 停止所有客户端连接将数据保存至磁盘后服务器程序退出
179  * @param save_data {bool} 是否在退出前保存数据至磁盘
180  */
181  void shutdown(bool save_data = true);
182 
183  /**
184  * 将当前服务器转变为指定服务器的从属服务器
185  * @param ip {const char*} 指定服务器的 IP
186  * @param port {int} 指定服务器的端口
187  * @return {bool} 是否成功
188  */
189  bool slaveof(const char* ip, int port);
190 
191  /**
192  * 查询较慢的操作日志
193  * @param number {int} 大于 0 时则限定日志条数,否则列出所有日志
194  * @return {const redis_result*}
195  */
196  const redis_result* slowlog_get(int number = 0);
197 
198  /**
199  * 可以查看当前日志的数量
200  * @return {int}
201  */
202  int slowlog_len(void);
203 
204  /**
205  * 可以清空 slow log
206  * @return {bool}
207  */
208  bool slowlog_reset(void);
209 
210  /**
211  * 返回当前服务器时间
212  * @param stamp {time_t&} 存储时间截(以 UNIX 时间戳格式表示)
213  * @param escape {int*} 存储当前这一秒钟已经逝去的微秒数
214  */
215  bool get_time(time_t& stamp, int& escape);
216 };
217 
218 } // namespace acl
219 
220 #endif // !defined(ACL_CLIENT_ONLY) && !defined(ACL_REDIS_DISABLE)
HTTP_API void const char * name
Definition: lib_http.h:620
#define ACL_CPP_DEPRECATED
Definition: atomic.hpp:86
#define ACL_CPP_API
ACL_CPP_API void escape(const char *in, size_t len, string &out)