diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/RedisConnection.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/RedisConnection.java
index 5431f1750..a43da80c2 100644
--- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/RedisConnection.java
+++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/RedisConnection.java
@@ -16,6 +16,8 @@
package org.springframework.data.keyvalue.redis.connection;
+import java.util.List;
+
import org.springframework.data.keyvalue.redis.UncategorizedRedisException;
/**
@@ -54,10 +56,44 @@ public interface RedisConnection extends RedisCommands {
* Indicates whether the connection is in "queue"(or "MULTI") mode or not.
* When queueing, all commands are postponed until EXEC or DISCARD commands
* are issued.
- * Since in queueing, no results are returned, the connection will return NULL
+ * Since in queueing no results are returned, the connection will return NULL
* on all operations that interact with the data.
*
* @return true if the connection is in queue/MULTI mode, false otherwise
*/
boolean isQueueing();
-}
+
+ /**
+ * Indicates whether the connection is currently pipelined or not.
+ *
+ * @return true if the connection is pipelined, false otherwise
+ * @see #openPipeline()
+ * @see #isQueueing()
+ */
+ boolean isPipelined();
+
+ /**
+ * Activates the pipeline mode for this connection. When pipelined, all commands return null
+ * (the reply is read at the end through {@link #closePipeline()}.
+ * Calling this method when the connection is already pipelined has no effect.
+ *
+ * Pipelining is used for issuing commands without requesting the response right away but rather
+ * at the end of the batch. While somewhat similar to MULTI, pipelining does not
+ * guarantee atomicity - it only tries to improve performance when issuing a lot of
+ * commands (such as in batching scenarios).
+ *
+ *
Note:
Consider doing some performance testing before using this feature since
+ * in many cases the performance benefits are minimal yet the impact on usage are not.
+ *
+ * @see #multi()
+ */
+ void openPipeline();
+
+ /**
+ * Executes the commands in the pipeline and returns their result.
+ * If the connection is not pipelined, an empty collection is returned.
+ *
+ * @return the result of the executed commands.
+ */
+ List