Redis pipeline 管道

2020-03-07  本文已影响0人  handsomemao666

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

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

Redis pipeline

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

redis pipeline工作机制

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

参考文章Using pipelining to speedup Redis queries

上一篇 下一篇

猜你喜欢

热点阅读