即使客户端尚未读取旧的响应,它也可以处理新的请求。通过这种方式,可以将多个命令发送到服务器,而根本不需要等待答复,最后一步即可读取答复。
但它的优势不仅在于此,还可以极大地减少IO,提高每秒可以执行的总操作量,因为可以通过单个read() 读取和单个write()答复这一批数据流,而不必每个命令都read()、write()一次,上下文切换也是巨大的速度损失。
使用pipeline性能可以达到不使用的10倍。
即使在本地测试,其内部仍然有类似网络的延迟,并不是在内存里直接共享数据。
每次发送数据量不是越大越好,每次发送的数据会载入内存并等待答复,数据量过大对内存占用会增大,可以结合服务器情况分成小批量。