【发布时间】:2021-05-05 10:43:16
【问题描述】:
我想使用TIdTCPClient 从使用 Delphi 和 TWebModule 制作的 Web 服务器应用程序连接到 Redis。
目前在创建 WebModule 时,我创建了一个新的 TIdTCPClient 并连接到 Redis,例如:
procedure TWebService.WebModuleCreate(Sender: TObject);-
begin
FClient := TIdTCPClient.Create();
FClient.Connect('REDIS_HOST', 6379);
end;
在 web 模块销毁时,我断开连接并释放资源,例如:
procedure TWebService.WebModuleDestroy(Sender: TObject);
begin
FClient.Disconnect;
FClient.Free;
end;
一切正常...但是这样我会在每个新请求上创建一个新连接,并且经过很长时间后,TIME_WAIT 套接字的数量会越来越多。
我想实现一个全局连接池,它始终打开固定数量的连接(例如:50),并且只使用这些连接池。
Indy 有什么东西可以管理 TCP 连接池吗?
【问题讨论】:
-
通常您会在更高级别进行池化——例如 Redis 客户端池。这样一来,测试连接(以查看它是否仍然有效)之类的常见池功能更具体到池中的内容。
标签: delphi tcp connection-pooling indy