目的
一次发送多个命令,节省往返时间
解决的问题
客户端和服务器通过网络进行连接。这个连接可以很快(loopback接口)或很慢(建立了一个多次跳转的网络连接)。无论网络延如何延时,数据包总是能从客户端到达服务器,并从服务器返回数据回复客户端。这个时间被称之为 RTT (Round Trip Time - 往返时间)。当客户端需要在一个批处理中执行多次请求时很容易看到这是如何影响性能的。
合理的批次数量
如果需要发送大量的命令如100w,最好是把他们按照合理数量分批次的处理,例如10K的命令,读回复,然后再发送另一个10k的命令,这样请求响应10次,时间较之稍长,但是内存使用上会更合理。
管道 VS 脚本
管道降低延迟的点是在网络通讯上,脚本降低延迟的点是在读写、计算操作上。虽然管道请求响应次数减少但是命令的长度不变,如果高并发过来又是很复杂的操作,网络传输上就会造成资源浪费。脚本可以缓存在服务器上可以节约网络资源,执行很复杂的操作性能相对更高。