学习

连接管理 - 连接池#

正如我们在上一节中所示,Redis 客户端负责管理与 Redis 服务器的连接。反复创建和重新创建新连接会给服务器带来很多不必要的负载。一个好的客户端库会提供一些优化连接管理的方法,例如通过设置连接池。使用连接池,客户端库会实例化一系列(持久性)连接到 Redis 服务器并保持它们打开。当应用程序需要发送请求时,当前线程将从连接池中获取其中一个连接,使用它,并在完成后归还。

因此,如果可能,请务必选择支持连接池的客户端库,因为仅此一项决定就能对系统的性能产生巨大影响。

管道化​#

正如任何客户端-服务器应用一样,Redis 可以同时处理许多客户端。每个客户端都会在套接字上执行(通常是阻塞的)读取,并等待服务器响应。服务器从套接字读取请求,解析它,处理它,并将响应写入套接字。数据包从客户端传输到服务器再返回所需的时间称为网络往返时间,即 RTT。例如,如果您需要执行 50 个命令,您必须发送请求并等待响应 50 次,每次都要支付 RTT 成本。为了解决这个问题,即使客户端尚未读取旧响应,Redis 也可以处理新请求。这样,您就可以向服务器发送多个命令,而无需等待任何回复;回复最终会在一个步骤中被读取。

这种技术称为管道化,是提高系统性能的另一种好方法。大多数 Redis 库都原生支持这种技术。

最后更新于 2024 年 2 月 29 日