MULTI / EXEC and pipelining are two different things. You can do MULTI / EXEC without pipelining and vice versa.
If you want to outline the pipeline at the same time, you need to group the operations into a pipeline per instance of Redis, and then use pipelining for each instance.
Here is a simple Ruby usage example: https://gist.github.com/2587593
One way to further improve performance is to parallelize traffic in Redis instances after grouping operations (i.e. group operations, you send them to all instances in parallel, you are waiting for responses from all instances).
This is a bit more complicated because an asynchronous non-blocking client is required. For maximum performance, C / C ++ should be used on the client side. This can be easily implemented using the hiredis + event loop of your choice.
source share