首页
学习
活动
专区
工具
TVP
发布

Redis 请求/响应模式

同一个连接上,请求/响应模式如下:

交互方向:客户端发送请求数据,服务器发送响应数据

对应关系:每一个请求数据有且仅有一个对应的响应数据

时序:响应数据的发送发生在"服务器完全接收到其对应的请求数据"之后

串行化实现

串行化实现方式,即同一个连接上,客户端收完第一个请求的响应后,再发起第二个请求

同一个连接的每一秒的吞吐量低:

单连接吞吐量 = 1 / (2 * 网络延迟 + 服务器处理单请求的时间 + 客户端处理单请求的时间)

Redis对单个请求的处理时间非常非常短,因此,在串行化模式下,单连接的大部分时间都处于网络等待,灭有充分利用服务器的能力

pipeline

不等上一次结果返回就发送下一次请求的模式成为pipeline。

Redis依赖的TCP协议是全双工,请求/响应穿插进行也不会发生请求和响应数据的混乱,因此可以将请求数据批量发送到服务器,再批量地从服务器连接的字节流中依次读取每个响应数据,可极大提高单连接吞吐量

该模式适合批量的独立写入操作。

pipeline的实现取决于客户端,需要考虑以下方面:

通过批量请求发送还是异步化请求发送来实现。

非异步化的批量发送下需要考虑每个批次的数据量,避免连接的buffer满之后的死锁

对使用者如何封装接口,使得pipeline使用简单

pipeline能达到的单连接每秒最高吞吐量为:

(n - 2 * 网络延迟) / (n * (服务器单请求处理时间 + 客户端单请求处理时间))

当n无穷大时,网络延迟可以忽略不计,吞吐量为:

1 / (服务器单请求处理时间 + 客户端单请求处理时间)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190111G1D5RG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券