端口Redis突破6380端口,拓展新前景(redis进入6380)
Redis 是一个开源的键值对(key-value)存储数据库,其优异的性能使其成为分布式系统的宠儿。由于表现不俗,Redis 经常被用作缓存系统,比如用于提高系统的查询性能和降低查询时间。传统 Redis 可以用同一个端口,默认一般是 6380 端口来提供服务,但,当客户端用户呈现急剧增多,这也就意味着大量客户端用户都要连接同一个端口,这对应用服务要求很高,同时会造成大量无法连接的情况出现。
为了解决这一问题,Redis 提出了一种全新的端口突破方式,就是同一时间允许不同客户端访问多个端口来接收服务,这样就可以实现更多的客户端同时连接,从而提高服务的可用性。
Redis 突破端口的具体实现方式是:使用如下代码 将不同的客户端分配到各个端口:
// 代码实现
for (int i=0; i
Connect_addr addr;
addr.port = start_port + i; // 从start_port起,步长为1,增加 num_ports 端口
addr.client = client[i];
addr.is_used = true; // 标志位,代表这个端口正在被用
// 把端口和客户端的映射关系存到全局变量addrs中
addrs.push_back(addr);
}
然后,每个客户端就可以根据获取到的特定端口,进行访问和连接,就可以达到突破的目的:
// 客户端代码实现
int port = GetSpecifiedPort();
if (port != 0) {
// 创建TCP连接
if (CreateTcpConnection(port)) {
// 连接服务器
ret = ConnectServerWithSpecifiedPort(port);
if (ret == 0) {
// 调用Redis相关命令
ret = CallRedisCmdAndGetResultFromSpecifiedPort(port);
if (ret == 0) {
// 成功
printf(“connected with specified port and invoke redis cmd succeeded\n”);
}
}
}
}
通过端口突破,Redis 扩展出新的业务场景,可为用户提供更高性能的服务,克服于单端口受限带来的用户连接数问题,使系统可以得到极大的提升和优化。