美文网首页
Redis pipeline 管道

Redis pipeline 管道

作者: handsomemao666 | 来源:发表于2020-03-07 11:49 被阅读0次

Redis是一种基于客户端-服务端(C/S)模型以及请求/响应协议(Request/Response protocol)的TCP服务。
通常情况下一个请求会遵循以下步骤:

  • 客户端向服务端发送一个请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
  • 服务端处理命令,并将结果返回给客户端。

数据包从客户端到达服务器,并从服务器返回数据回复客户端,这个时间称为RTT(Round Trip Time - 往返时间)。
当向redis插入大量数据时,不仅消耗很多的RTT时间,而且还消耗了大量IO调用(IO调用涉及到用户态到内核态之间的切换)。

Redis pipeline

pipeline原理是:一次请求/响应服务器能实现处理新的请求,即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。这样就可以减少RTT时间和频繁的IO调用。

redis pipeline工作机制

  • 客户端:将多个命令缓存起来,缓冲区满了或者达到发送条件就发送出去,最后才处理Redis的应答。
  • 服务端:能够处理一个客户端通过同一个TCP连接发来的多个命令。

注意事项:
当客户端使用pipeline发送很多请求时,服务器将在内存中使用队列存储这些指令的响应。所以批量发送的指令数量,最好在一个合理的范围内,比如每次发1万条指令,读取完响应后再发送另外1万条指令。2万条指令,一次性发送和分2次发送,对客户端来说速度是差不多的,但是对服务器来说,内存占用差了1万条响应的大小。

参考文章Using pipelining to speedup Redis queries

相关文章

网友评论

      本文标题:Redis pipeline 管道

      本文链接:https://www.haomeiwen.com/subject/ajeqdhtx.html