There's a lot of information on "pipelining" in PHP+Redis on the web. However, When you actually start looking at the examples, not a single one of them does actual pipelining. All they do is batch processing. As examples, let's take Predis ->pipeline() (https://github.com/nrk/predis) and Phpredis ->multi() (https://github.com/nicolasff/phpredis). They basically suspend execution of commands and instead collect the commands into a buffer, then execute them as a batch when calling ->execute() / ->exec() later.
Disadvantages: - has to allocate a command buffer that can grow large for many commands - needs a round-trip to the server once for every batch of commands
The behaviour I would expect from pipelining mode is: Start sending commands as soon as I pass them to the client, not buffer them. Return before the response for a command has arrived. Allow to send more and more commands while the previous ones are "in flight". Once in a while, collect responses from the client that have arrived, without waiting for responses that have not yet arrived.
The strange thing is that the examples actually pass constants to the client that are called "pipelining", yet they describe the behaviour as batch processing.
Big question: How can you actually put those clients into pipelining mode?