pipeline是客户端向redis发送多条命令的通道.
redis并没有在命令行中提供pipeline功能;
除去redis本身需要支持pipeline功能,其他各语言版的客户端都需要有相应的实现.
通常客户端请求执行一条命令分为以下四个步骤:
1.发送命令
2.命令排队
3.命令执行
4.返回结果
其中,第一步和第四步合称为round trip time(RTT,往返延时).
pipeline的作用就是在需要执行多条命令时,减少RTT时间.
pipeline和mget,mset命令类似可以发送多条命令给服务端同时执行,但pipeline更灵活,也不限于同一类型操作命令.
注意事项:
1. pipeline虽然好用,但是每次pipeline组装的命令个数不能太多,如果组装数据量过大,会增加客户端的等待时长,造成一定的网络阻塞.
每条命令的结果值会存储在socket的output缓冲区,所以redis能同时所能支撑的pipeline链接的个数也是有限的.
最佳方式是将含有大量命令的pipeline拆分成多次较小的pipeline来完成.
2. pipeline在集群中应用时,应注意所执行命令需在同一服务器上,否则会引起slot错误.