You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2020/06/11 03:40:19 UTC

[geode] branch develop updated: GEODE-8151: Convert remaining commands to use RedisResponse (#5228)

This is an automated email from the ASF dual-hosted git repository.

jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new 3897ab1  GEODE-8151: Convert remaining commands to use RedisResponse (#5228)
3897ab1 is described below

commit 3897ab1c7d1d526ee29f3e0da7c9fd846914b425
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Wed Jun 10 20:35:45 2020 -0700

    GEODE-8151: Convert remaining commands to use RedisResponse (#5228)
---
 .../geode/redis/key/TimeIntegrationTest.java       | 60 ++++++++++++++++++
 .../geode/redis/internal/RedisCommandType.java     |  2 +-
 .../geode/redis/internal/executor/Executor.java    | 15 +----
 .../redis/internal/executor/RedisResponse.java     | 10 +++
 .../redis/internal/executor/UnknownExecutor.java   |  9 +--
 .../redis/internal/executor/hash/HDelExecutor.java |  2 +-
 .../internal/executor/hash/HExistsExecutor.java    |  2 +-
 .../internal/executor/hash/HGetAllExecutor.java    |  2 +-
 .../redis/internal/executor/hash/HGetExecutor.java |  2 +-
 .../internal/executor/hash/HIncrByExecutor.java    |  2 +-
 .../executor/hash/HIncrByFloatExecutor.java        |  2 +-
 .../internal/executor/hash/HKeysExecutor.java      |  2 +-
 .../redis/internal/executor/hash/HLenExecutor.java |  2 +-
 .../internal/executor/hash/HMGetExecutor.java      |  2 +-
 .../internal/executor/hash/HMSetExecutor.java      |  2 +-
 .../internal/executor/hash/HScanExecutor.java      |  2 +-
 .../redis/internal/executor/hash/HSetExecutor.java |  2 +-
 .../internal/executor/hash/HValsExecutor.java      |  2 +-
 .../internal/executor/key/DBSizeExecutor.java      |  8 ++-
 .../redis/internal/executor/key/DelExecutor.java   |  7 +-
 .../internal/executor/key/ExistsExecutor.java      |  8 +--
 .../internal/executor/key/ExpireAtExecutor.java    | 21 +++---
 .../internal/executor/key/ExpireExecutor.java      | 16 ++---
 .../internal/executor/key/FlushAllExecutor.java    |  7 +-
 .../redis/internal/executor/key/KeysExecutor.java  | 20 +++---
 .../internal/executor/key/PersistExecutor.java     | 14 ++--
 .../internal/executor/key/RenameExecutor.java      | 19 +++---
 .../redis/internal/executor/key/ScanExecutor.java  | 31 ++++-----
 .../redis/internal/executor/key/TTLExecutor.java   | 14 ++--
 .../redis/internal/executor/key/TypeExecutor.java  | 11 ++--
 .../executor/pubsub/PsubscribeExecutor.java        | 36 ++---------
 .../internal/executor/pubsub/PublishExecutor.java  |  2 +-
 .../executor/pubsub/PunsubscribeExecutor.java      | 15 ++---
 .../executor/pubsub/SubscribeExecutor.java         | 36 ++---------
 .../executor/pubsub/UnsubscribeExecutor.java       | 20 ++----
 .../internal/executor/server/AuthExecutor.java     |  2 +-
 .../internal/executor/server/EchoExecutor.java     | 11 ++--
 .../internal/executor/server/PingExecutor.java     |  8 +--
 .../internal/executor/server/QuitExecutor.java     |  2 +-
 .../internal/executor/server/ShutDownExecutor.java |  6 +-
 .../internal/executor/server/TimeExecutor.java     | 30 +++------
 .../redis/internal/executor/set/SAddExecutor.java  |  2 +-
 .../redis/internal/executor/set/SCardExecutor.java |  2 +-
 .../internal/executor/set/SIsMemberExecutor.java   |  2 +-
 .../internal/executor/set/SMembersExecutor.java    |  2 +-
 .../redis/internal/executor/set/SMoveExecutor.java |  2 +-
 .../redis/internal/executor/set/SPopExecutor.java  |  2 +-
 .../internal/executor/set/SRandMemberExecutor.java |  2 +-
 .../redis/internal/executor/set/SRemExecutor.java  |  2 +-
 .../redis/internal/executor/set/SScanExecutor.java |  2 +-
 .../redis/internal/executor/set/SetOpExecutor.java |  2 +-
 .../internal/executor/string/AppendExecutor.java   |  2 +-
 .../internal/executor/string/BitCountExecutor.java |  2 +-
 .../internal/executor/string/BitOpExecutor.java    |  2 +-
 .../internal/executor/string/BitPosExecutor.java   |  2 +-
 .../internal/executor/string/DecrByExecutor.java   |  2 +-
 .../internal/executor/string/DecrExecutor.java     |  2 +-
 .../internal/executor/string/GetBitExecutor.java   |  2 +-
 .../internal/executor/string/GetExecutor.java      |  2 +-
 .../internal/executor/string/GetRangeExecutor.java |  2 +-
 .../internal/executor/string/GetSetExecutor.java   |  2 +-
 .../internal/executor/string/IncrByExecutor.java   |  2 +-
 .../executor/string/IncrByFloatExecutor.java       |  2 +-
 .../internal/executor/string/IncrExecutor.java     |  2 +-
 .../internal/executor/string/MGetExecutor.java     |  2 +-
 .../internal/executor/string/MSetExecutor.java     |  2 +-
 .../internal/executor/string/MSetNXExecutor.java   |  2 +-
 .../internal/executor/string/SetBitExecutor.java   |  2 +-
 .../internal/executor/string/SetEXExecutor.java    |  2 +-
 .../internal/executor/string/SetExecutor.java      |  2 +-
 .../internal/executor/string/SetNXExecutor.java    |  2 +-
 .../internal/executor/string/SetRangeExecutor.java |  2 +-
 .../internal/executor/string/StrlenExecutor.java   |  2 +-
 .../apache/geode/redis/internal/netty/Coder.java   | 47 +++++++++-----
 .../internal/netty/ExecutionHandlerContext.java    |  7 +-
 .../internal/ExecutionHandlerContextJUnitTest.java | 74 ----------------------
 .../executor/UnknownExecutorJUnitTest.java         |  8 +--
 .../executor/key/ExpireAtExecutorJUnitTest.java    | 22 +++----
 .../executor/key/ExpireExecutorJUnitTest.java      | 17 ++---
 .../executor/key/PExpireAtExecutorJUnitTest.java   | 22 +++----
 .../executor/key/PersistExecutorJUnitTest.java     | 24 ++-----
 .../executor/string/GetRangeExecutorJUnitTest.java |  8 +--
 .../executor/string/GetSetExecutorJUnitTest.java   |  4 +-
 .../executor/string/IncrExecutorJUnitTest.java     |  4 +-
 .../string/StringMGetExecutorJUnitTest.java        |  4 +-
 .../string/StringMSetExecutorJUnitTest.java        |  4 +-
 .../string/StringSetExecutorJUnitTest.java         | 12 ++--
 .../executor/string/StrlenExecutorJUnitTest.java   |  4 +-
 88 files changed, 345 insertions(+), 446 deletions(-)

diff --git a/geode-redis/src/integrationTest/java/org/apache/geode/redis/key/TimeIntegrationTest.java b/geode-redis/src/integrationTest/java/org/apache/geode/redis/key/TimeIntegrationTest.java
new file mode 100644
index 0000000..8282ff3
--- /dev/null
+++ b/geode-redis/src/integrationTest/java/org/apache/geode/redis/key/TimeIntegrationTest.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ */
+
+package org.apache.geode.redis.key;
+
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import redis.clients.jedis.Jedis;
+
+import org.apache.geode.redis.GeodeRedisServerRule;
+
+public class TimeIntegrationTest {
+
+  public Jedis jedis;
+  public static int REDIS_CLIENT_TIMEOUT = 10000;
+
+  @Rule
+  public GeodeRedisServerRule server = new GeodeRedisServerRule()
+      .withProperty(LOG_LEVEL, "info");
+
+  @Before
+  public void setUp() {
+    jedis = new Jedis("localhost", server.getPort(), REDIS_CLIENT_TIMEOUT);
+  }
+
+  @After
+  public void classLevelTearDown() {
+    jedis.close();
+  }
+
+  @Test
+  public void timeCommandRespondsWIthTwoValues() {
+    List<String> timestamp = jedis.time();
+
+    assertThat(timestamp).hasSize(2);
+    assertThat(Long.parseLong(timestamp.get(0))).isGreaterThan(0);
+    assertThat(Long.parseLong(timestamp.get(1))).isGreaterThan(0);
+  }
+
+}
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/RedisCommandType.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/RedisCommandType.java
index f0f54e2..cd83e71 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/RedisCommandType.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/RedisCommandType.java
@@ -397,6 +397,6 @@ public enum RedisCommandType {
       ExecutionHandlerContext executionHandlerContext) {
     parameterRequirements.checkParameters(command, executionHandlerContext);
 
-    return executor.executeCommandWithResponse(command, executionHandlerContext);
+    return executor.executeCommand(command, executionHandlerContext);
   }
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/Executor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/Executor.java
index 2b2cae6..3952e76 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/Executor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/Executor.java
@@ -31,18 +31,5 @@ public interface Executor {
    * @param command The command to be executed
    * @param context The execution context by which this command is to be executed
    */
-  default void executeCommand(Command command, ExecutionHandlerContext context) {
-    executeCommandWithResponse(command, context);
-  }
-
-  /**
-   * Interim method to transition to returning a {@link RedisResponse}
-   *
-   * TODO: Once all commands are transitioned, one of these methods needs to be removed.
-   */
-  default RedisResponse executeCommandWithResponse(Command command,
-      ExecutionHandlerContext context) {
-    executeCommand(command, context);
-    return null;
-  }
+  RedisResponse executeCommand(Command command, ExecutionHandlerContext context);
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/RedisResponse.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/RedisResponse.java
index 9325f0f..6eda6ed 100644
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/RedisResponse.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/RedisResponse.java
@@ -70,6 +70,16 @@ public class RedisResponse {
     return new RedisResponse(Coder::getNilResponse);
   }
 
+  public static RedisResponse flattenedArray(Collection<Collection<?>> nestedCollection) {
+    return new RedisResponse((bba) -> {
+      try {
+        return Coder.getFlattenedArrayResponse(bba, nestedCollection);
+      } catch (CoderException e) {
+        return Coder.getErrorResponse(bba, "Internal server error: " + e.getMessage());
+      }
+    });
+  }
+
   public static RedisResponse array(Collection<?> collection) {
     return new RedisResponse((bba) -> {
       try {
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/UnknownExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/UnknownExecutor.java
index 2fa2f9b..4882746 100644
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/UnknownExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/UnknownExecutor.java
@@ -15,9 +15,10 @@
  */
 package org.apache.geode.redis.internal.executor;
 
+import static org.apache.geode.redis.internal.RedisConstants.ERROR_UNKNOWN_COMMAND;
+
 import java.util.Collection;
 
-import org.apache.geode.redis.internal.RedisConstants;
 import org.apache.geode.redis.internal.netty.Coder;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
@@ -25,7 +26,8 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class UnknownExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
 
     StringBuilder commandProcessedText = new StringBuilder();
 
@@ -42,7 +44,6 @@ public class UnknownExecutor extends AbstractExecutor {
       }
     }
 
-    command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(),
-        RedisConstants.ERROR_UNKNOWN_COMMAND + " " + commandProcessedText));
+    return RedisResponse.error(ERROR_UNKNOWN_COMMAND + " " + commandProcessedText);
   }
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HDelExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HDelExecutor.java
index 031aea8..6064221 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HDelExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HDelExecutor.java
@@ -42,7 +42,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class HDelExecutor extends HashExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<ByteArrayWrapper> commandElems = command.getProcessedCommandWrappers();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HExistsExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HExistsExecutor.java
index 9bda35c..d0170f8 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HExistsExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HExistsExecutor.java
@@ -40,7 +40,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class HExistsExecutor extends HashExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HGetAllExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HGetAllExecutor.java
index 935ae99..b6524dc 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HGetAllExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HGetAllExecutor.java
@@ -43,7 +43,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class HGetAllExecutor extends HashExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     ByteArrayWrapper key = command.getKey();
     RedisHashCommands redisHashCommands = createRedisHashCommands(context);
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HGetExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HGetExecutor.java
index 1b17b90..413fb48 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HGetExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HGetExecutor.java
@@ -37,7 +37,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class HGetExecutor extends HashExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HIncrByExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HIncrByExecutor.java
index d2eac88..42ddcca 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HIncrByExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HIncrByExecutor.java
@@ -50,7 +50,7 @@ public class HIncrByExecutor extends HashExecutor {
   private static final int INCREMENT_INDEX = FIELD_INDEX + 1;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     ByteArrayWrapper key = command.getKey();
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HIncrByFloatExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HIncrByFloatExecutor.java
index 574b54c..bb933dd 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HIncrByFloatExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HIncrByFloatExecutor.java
@@ -52,7 +52,7 @@ public class HIncrByFloatExecutor extends HashExecutor {
   private static final int INCREMENT_INDEX = FIELD_INDEX + 1;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     byte[] byteField = commandElems.get(FIELD_INDEX);
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HKeysExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HKeysExecutor.java
index 9c609e8..64ef054 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HKeysExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HKeysExecutor.java
@@ -43,7 +43,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class HKeysExecutor extends HashExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     ByteArrayWrapper key = command.getKey();
     RedisHashCommands redisHashCommands = createRedisHashCommands(context);
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HLenExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HLenExecutor.java
index b0ea0b7..18c19cd 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HLenExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HLenExecutor.java
@@ -36,7 +36,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class HLenExecutor extends HashExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     ByteArrayWrapper key = command.getKey();
     RedisHashCommands redisHashCommands = createRedisHashCommands(context);
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HMGetExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HMGetExecutor.java
index fda9358..9939d60 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HMGetExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HMGetExecutor.java
@@ -43,7 +43,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class HMGetExecutor extends HashExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
 
     ByteArrayWrapper key = command.getKey();
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HMSetExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HMSetExecutor.java
index d0d3c2c..298b5f6 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HMSetExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HMSetExecutor.java
@@ -47,7 +47,7 @@ public class HMSetExecutor extends HashExecutor {
   private static final String SUCCESS = "OK";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<ByteArrayWrapper> commandElems = command.getProcessedCommandWrappers();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HScanExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HScanExecutor.java
index e6c71d6..0c7c0cc 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HScanExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HScanExecutor.java
@@ -33,7 +33,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class HScanExecutor extends AbstractScanExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HSetExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HSetExecutor.java
index 9690fda..9c6bb67 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HSetExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HSetExecutor.java
@@ -40,7 +40,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class HSetExecutor extends HashExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<ByteArrayWrapper> commandElems = command.getProcessedCommandWrappers();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HValsExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HValsExecutor.java
index 75d2600..939622a 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HValsExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/hash/HValsExecutor.java
@@ -49,7 +49,7 @@ public class HValsExecutor extends HashExecutor {
    * @param context the context (ex: region provider)
    */
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     ByteArrayWrapper key = command.getKey();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/DBSizeExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/DBSizeExecutor.java
index 0fdf719..e74f1be 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/DBSizeExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/DBSizeExecutor.java
@@ -16,16 +16,18 @@
 package org.apache.geode.redis.internal.executor.key;
 
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class DBSizeExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     int size = context.getRegionProvider().getDataRegion().size();
-    command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), size));
+
+    return RedisResponse.integer(size);
   }
 
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/DelExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/DelExecutor.java
index 3909985..b234f1d 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/DelExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/DelExecutor.java
@@ -19,14 +19,15 @@ import java.util.List;
 
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class DelExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<ByteArrayWrapper> commandElems = command.getProcessedCommandWrappers();
 
     long numRemoved = commandElems
@@ -35,6 +36,6 @@ public class DelExecutor extends AbstractExecutor {
         .filter((key) -> getRedisKeyCommands(context).del(key))
         .count();
 
-    command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), numRemoved));
+    return RedisResponse.integer(numRemoved);
   }
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExistsExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExistsExecutor.java
index 3d61f3a..375991f 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExistsExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExistsExecutor.java
@@ -19,14 +19,15 @@ import java.util.List;
 
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class ExistsExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<ByteArrayWrapper> commandElems = command.getProcessedCommandWrappers();
     RedisKeyCommands redisKeyCommands = getRedisKeyCommands(context);
 
@@ -36,7 +37,6 @@ public class ExistsExecutor extends AbstractExecutor {
         .filter(key -> redisKeyCommands.exists(key))
         .count();
 
-
-    command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), existsCount));
+    return RedisResponse.integer(existsCount);
   }
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExpireAtExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExpireAtExecutor.java
index 535d5cc..714701d 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExpireAtExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExpireAtExecutor.java
@@ -24,6 +24,7 @@ import org.apache.geode.redis.internal.RedisConstants.ArityDef;
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
 import org.apache.geode.redis.internal.executor.Extendable;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Coder;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
@@ -31,17 +32,15 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class ExpireAtExecutor extends AbstractExecutor implements Extendable {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     int TIMESTAMP_INDEX = 2;
 
     if (commandElems.size() != 3) {
-      command.setResponse(
-          Coder.getErrorResponse(
-              context.getByteBufAllocator(),
-              getArgsError()));
-      return;
+      return RedisResponse.error(getArgsError());
     }
+
     ByteArrayWrapper wKey = command.getKey();
 
     byte[] timestampByteArray = commandElems.get(TIMESTAMP_INDEX);
@@ -49,9 +48,7 @@ public class ExpireAtExecutor extends AbstractExecutor implements Extendable {
     try {
       timestamp = Coder.bytesToLong(timestampByteArray);
     } catch (NumberFormatException e) {
-      command.setResponse(
-          Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_NOT_INTEGER));
-      return;
+      return RedisResponse.error(ERROR_NOT_INTEGER);
     }
 
     if (!timeUnitMillis()) {
@@ -60,10 +57,8 @@ public class ExpireAtExecutor extends AbstractExecutor implements Extendable {
 
     RedisKeyCommands redisKeyCommands = getRedisKeyCommands(context);
     int result = redisKeyCommands.pexpireat(wKey, timestamp);
-    command.setResponse(
-        Coder.getIntegerResponse(
-            context.getByteBufAllocator(),
-            result));
+
+    return RedisResponse.integer(result);
   }
 
   protected boolean timeUnitMillis() {
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExpireExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExpireExecutor.java
index cba3870..8f184b0 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExpireExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ExpireExecutor.java
@@ -24,6 +24,7 @@ import org.apache.geode.redis.internal.RedisConstants.ArityDef;
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
 import org.apache.geode.redis.internal.executor.Extendable;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Coder;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
@@ -31,15 +32,13 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class ExpireExecutor extends AbstractExecutor implements Extendable {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     int SECONDS_INDEX = 2;
 
     if (commandElems.size() != 3) {
-      command.setResponse(
-          Coder.getErrorResponse(
-              context.getByteBufAllocator(), getArgsError()));
-      return;
+      return RedisResponse.error(getArgsError());
     }
 
     ByteArrayWrapper key = command.getKey();
@@ -48,9 +47,7 @@ public class ExpireExecutor extends AbstractExecutor implements Extendable {
     try {
       delay = Coder.bytesToLong(delayByteArray);
     } catch (NumberFormatException e) {
-      command.setResponse(
-          Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_NOT_INTEGER));
-      return;
+      return RedisResponse.error(ERROR_NOT_INTEGER);
     }
 
     if (!timeUnitMillis()) {
@@ -62,7 +59,8 @@ public class ExpireExecutor extends AbstractExecutor implements Extendable {
     RedisKeyCommands redisKeyCommands = new RedisKeyCommandsFunctionExecutor(
         context.getRegionProvider().getDataRegion());
     int result = redisKeyCommands.pexpireat(key, timestamp);
-    command.setResponse(Coder.getIntegerResponse(context.getByteBufAllocator(), result));
+
+    return RedisResponse.integer(result);
   }
 
   /*
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/FlushAllExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/FlushAllExecutor.java
index 545c276..a90446f 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/FlushAllExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/FlushAllExecutor.java
@@ -17,20 +17,21 @@ package org.apache.geode.redis.internal.executor.key;
 
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class FlushAllExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     RedisKeyCommands redisKeyCommands = getRedisKeyCommands(context);
     for (ByteArrayWrapper skey : context.getRegionProvider().getDataRegion().keySet()) {
       redisKeyCommands.del(skey);
     }
 
-    command.setResponse(Coder.getSimpleStringResponse(context.getByteBufAllocator(), "OK"));
+    return RedisResponse.string("OK");
   }
 
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/KeysExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/KeysExecutor.java
index 045506b..6ba0a59 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/KeysExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/KeysExecutor.java
@@ -15,17 +15,19 @@
  */
 package org.apache.geode.redis.internal.executor.key;
 
+import static org.apache.geode.redis.internal.RedisConstants.ERROR_ILLEGAL_GLOB;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
-import org.apache.geode.redis.internal.RedisConstants;
 import org.apache.geode.redis.internal.RedisConstants.ArityDef;
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
 import org.apache.geode.redis.internal.executor.GlobPattern;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Coder;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
@@ -33,11 +35,11 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class KeysExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     if (commandElems.size() < 2) {
-      command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ArityDef.KEYS));
-      return;
+      return RedisResponse.error(ArityDef.KEYS);
     }
 
     String glob = Coder.bytesToString(commandElems.get(1));
@@ -48,9 +50,7 @@ public class KeysExecutor extends AbstractExecutor {
     try {
       pattern = GlobPattern.compile(glob);
     } catch (PatternSyntaxException e) {
-      command.setResponse(
-          Coder.getErrorResponse(context.getByteBufAllocator(), RedisConstants.ERROR_ILLEGAL_GLOB));
-      return;
+      return RedisResponse.error(ERROR_ILLEGAL_GLOB);
     }
 
     for (ByteArrayWrapper bytesKey : allKeys) {
@@ -61,9 +61,9 @@ public class KeysExecutor extends AbstractExecutor {
     }
 
     if (matchingKeys.isEmpty()) {
-      command.setResponse(Coder.getEmptyArrayResponse(context.getByteBufAllocator()));
-    } else {
-      respondBulkStrings(command, context, matchingKeys);
+      return RedisResponse.emptyArray();
     }
+
+    return respondBulkStrings(matchingKeys);
   }
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/PersistExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/PersistExecutor.java
index 8ccd7f7..fd96dd5 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/PersistExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/PersistExecutor.java
@@ -20,19 +20,19 @@ import java.util.List;
 import org.apache.geode.redis.internal.RedisConstants.ArityDef;
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class PersistExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
     if (commandElems.size() != 2) {
-      command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ArityDef.PERSIST));
-      return;
+      return RedisResponse.error(ArityDef.PERSIST);
     }
 
     ByteArrayWrapper key = command.getKey();
@@ -40,10 +40,8 @@ public class PersistExecutor extends AbstractExecutor {
     RedisKeyCommands redisKeyCommands = new RedisKeyCommandsFunctionExecutor(
         context.getRegionProvider().getDataRegion());
     int result = redisKeyCommands.persist(key);
-    command.setResponse(
-        Coder.getIntegerResponse(
-            context.getByteBufAllocator(),
-            result));
+
+    return RedisResponse.integer(result);
   }
 
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/RenameExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/RenameExecutor.java
index f78cc77..abfc320 100644
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/RenameExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/RenameExecutor.java
@@ -16,35 +16,34 @@
 
 package org.apache.geode.redis.internal.executor.key;
 
+import static org.apache.geode.redis.internal.RedisConstants.ERROR_NO_SUCH_KEY;
+
 import java.util.List;
 
-import org.apache.geode.redis.internal.RedisConstants;
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class RenameExecutor extends AbstractExecutor {
+
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<ByteArrayWrapper> commandElems = command.getProcessedCommandWrappers();
     ByteArrayWrapper key = command.getKey();
     ByteArrayWrapper newKey = commandElems.get(2);
     RedisKeyCommands redisKeyCommands = getRedisKeyCommands(context);
 
     if (key.equals(newKey)) {
-      command.setResponse(Coder.getSimpleStringResponse(context.getByteBufAllocator(), "OK"));
-      return;
+      return RedisResponse.string("OK");
     }
 
     if (!redisKeyCommands.rename(key, newKey)) {
-      command.setResponse(
-          Coder.getErrorResponse(context.getByteBufAllocator(),
-              RedisConstants.ERROR_NO_SUCH_KEY));
-      return;
+      return RedisResponse.error(ERROR_NO_SUCH_KEY);
     }
 
-    command.setResponse(Coder.getSimpleStringResponse(context.getByteBufAllocator(), "OK"));
+    return RedisResponse.string("OK");
   }
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ScanExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ScanExecutor.java
index 0e632fa..aaf68be 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ScanExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/ScanExecutor.java
@@ -15,14 +15,16 @@
  */
 package org.apache.geode.redis.internal.executor.key;
 
+import static org.apache.geode.redis.internal.RedisConstants.ERROR_ILLEGAL_GLOB;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
-import org.apache.geode.redis.internal.RedisConstants;
 import org.apache.geode.redis.internal.RedisConstants.ArityDef;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Coder;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
@@ -30,12 +32,12 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class ScanExecutor extends AbstractScanExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
     if (commandElems.size() < 2) {
-      command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ArityDef.SCAN));
-      return;
+      return RedisResponse.error(ArityDef.SCAN);
     }
 
     String cursorString = command.getStringKey();
@@ -46,12 +48,10 @@ public class ScanExecutor extends AbstractScanExecutor {
     try {
       cursor = Integer.parseInt(cursorString);
     } catch (NumberFormatException e) {
-      command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_CURSOR));
-      return;
+      return RedisResponse.error(ERROR_CURSOR);
     }
     if (cursor < 0) {
-      command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_CURSOR));
-      return;
+      return RedisResponse.error(ERROR_CURSOR);
     }
 
     if (commandElems.size() > 3) {
@@ -66,8 +66,7 @@ public class ScanExecutor extends AbstractScanExecutor {
           count = Coder.bytesToInt(bytes);
         }
       } catch (NumberFormatException e) {
-        command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_COUNT));
-        return;
+        return RedisResponse.error(ERROR_COUNT);
       }
     }
 
@@ -80,29 +79,25 @@ public class ScanExecutor extends AbstractScanExecutor {
           count = Coder.bytesToInt(bytes);
         }
       } catch (NumberFormatException e) {
-        command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_COUNT));
-        return;
+        return RedisResponse.error(ERROR_COUNT);
       }
     }
 
     if (count < 0) {
-      command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ERROR_COUNT));
-      return;
+      return RedisResponse.error(ERROR_COUNT);
     }
 
     try {
       matchPattern = convertGlobToRegex(globMatchString);
     } catch (PatternSyntaxException e) {
-      command.setResponse(
-          Coder.getErrorResponse(context.getByteBufAllocator(), RedisConstants.ERROR_ILLEGAL_GLOB));
-      return;
+      return RedisResponse.error(ERROR_ILLEGAL_GLOB);
     }
 
     @SuppressWarnings("unchecked")
     List<String> returnList = (List<String>) getIteration(getDataRegion(context).keySet(),
         matchPattern, count, cursor);
 
-    command.setResponse(Coder.getScanResponse(context.getByteBufAllocator(), returnList));
+    return RedisResponse.scan(returnList);
   }
 
   @SuppressWarnings("unchecked")
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/TTLExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/TTLExecutor.java
index 5e336f2..075d0e8 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/TTLExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/TTLExecutor.java
@@ -23,19 +23,19 @@ import org.apache.geode.redis.internal.RedisConstants.ArityDef;
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
 import org.apache.geode.redis.internal.executor.Extendable;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class TTLExecutor extends AbstractExecutor implements Extendable {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
     if (commandElems.size() < 2) {
-      command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), getArgsError()));
-      return;
+      return RedisResponse.error(getArgsError());
     }
 
     ByteArrayWrapper key = command.getKey();
@@ -45,10 +45,8 @@ public class TTLExecutor extends AbstractExecutor implements Extendable {
     if (result > 0 && !timeUnitMillis()) {
       result = MILLISECONDS.toSeconds(result);
     }
-    command.setResponse(
-        Coder.getIntegerResponse(
-            context.getByteBufAllocator(),
-            result));
+
+    return RedisResponse.integer(result);
   }
 
   protected boolean timeUnitMillis() {
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/TypeExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/TypeExecutor.java
index 79acb43..71d7a60 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/TypeExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/key/TypeExecutor.java
@@ -20,23 +20,24 @@ import java.util.List;
 import org.apache.geode.redis.internal.RedisConstants.ArityDef;
 import org.apache.geode.redis.internal.data.ByteArrayWrapper;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class TypeExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     if (commandElems.size() < 2) {
-      command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ArityDef.TYPE));
-      return;
+      return RedisResponse.error(ArityDef.TYPE);
     }
 
     ByteArrayWrapper key = command.getKey();
     String result = getRedisKeyCommands(context).type(key);
-    respondBulkStrings(command, context, result);
+
+    return respondBulkStrings(result);
   }
 
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PsubscribeExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PsubscribeExecutor.java
index f84b5c8..9ece01f 100644
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PsubscribeExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PsubscribeExecutor.java
@@ -17,26 +17,22 @@
 package org.apache.geode.redis.internal.executor.pubsub;
 
 import java.util.ArrayList;
+import java.util.Collection;
 
-import io.netty.buffer.ByteBuf;
-import org.apache.logging.log4j.Logger;
-
-import org.apache.geode.logging.internal.log4j.api.LogService;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
 import org.apache.geode.redis.internal.executor.GlobPattern;
-import org.apache.geode.redis.internal.netty.Coder;
-import org.apache.geode.redis.internal.netty.CoderException;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class PsubscribeExecutor extends AbstractExecutor {
-  private static final Logger logger = LogService.getLogger();
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
-    ArrayList<ArrayList<Object>> items = new ArrayList<>();
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
+    Collection<Collection<?>> items = new ArrayList<>();
     for (int i = 1; i < command.getProcessedCommand().size(); i++) {
-      ArrayList<Object> item = new ArrayList<>();
+      Collection<Object> item = new ArrayList<>();
       byte[] pattern = command.getProcessedCommand().get(i);
       long subscribedChannels =
           context.getPubSub().psubscribe(
@@ -49,25 +45,7 @@ public class PsubscribeExecutor extends AbstractExecutor {
       items.add(item);
     }
 
-    writeResponse(command, context, items);
-  }
-
-  private void writeResponse(Command command, ExecutionHandlerContext context,
-      ArrayList<ArrayList<Object>> items) {
-    ByteBuf aggregatedResponse = context.getByteBufAllocator().buffer();
-    items.forEach(item -> {
-      ByteBuf response = null;
-      try {
-        response = Coder.getArrayResponse(context.getByteBufAllocator(), item);
-      } catch (CoderException e) {
-        logger.warn("Error encoding subscribe response", e);
-      }
-      if (response != null) {
-        aggregatedResponse.writeBytes(response);
-        response.release();
-      }
-    });
-    command.setResponse(aggregatedResponse);
+    return RedisResponse.flattenedArray(items);
   }
 
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PublishExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PublishExecutor.java
index 47c6698..972d83d 100644
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PublishExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PublishExecutor.java
@@ -26,7 +26,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class PublishExecutor extends AbstractExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> args = command.getProcessedCommand();
     if (args.size() != 3) {
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PunsubscribeExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PunsubscribeExecutor.java
index a0075ac..9b49127 100644
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PunsubscribeExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/PunsubscribeExecutor.java
@@ -18,14 +18,12 @@ package org.apache.geode.redis.internal.executor.pubsub;
 
 import java.util.ArrayList;
 
-import io.netty.buffer.ByteBuf;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.logging.internal.log4j.api.LogService;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
 import org.apache.geode.redis.internal.executor.GlobPattern;
-import org.apache.geode.redis.internal.netty.Coder;
-import org.apache.geode.redis.internal.netty.CoderException;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
@@ -33,7 +31,8 @@ public class PunsubscribeExecutor extends AbstractExecutor {
   private static final Logger logger = LogService.getLogger();
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     byte[] pattern = command.getProcessedCommand().get(1);
     long subscriptionCount =
         context
@@ -45,12 +44,6 @@ public class PunsubscribeExecutor extends AbstractExecutor {
     items.add(pattern);
     items.add(subscriptionCount);
 
-    ByteBuf response = null;
-    try {
-      response = Coder.getArrayResponse(context.getByteBufAllocator(), items);
-    } catch (CoderException e) {
-      logger.warn("Error encoding unsubscribe response", e);
-    }
-    command.setResponse(response);
+    return RedisResponse.array(items);
   }
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/SubscribeExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/SubscribeExecutor.java
index 2d26d91..afc041d 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/SubscribeExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/SubscribeExecutor.java
@@ -16,25 +16,21 @@
 package org.apache.geode.redis.internal.executor.pubsub;
 
 import java.util.ArrayList;
+import java.util.Collection;
 
-import io.netty.buffer.ByteBuf;
-import org.apache.logging.log4j.Logger;
-
-import org.apache.geode.logging.internal.log4j.api.LogService;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
-import org.apache.geode.redis.internal.netty.CoderException;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class SubscribeExecutor extends AbstractExecutor {
-  private static final Logger logger = LogService.getLogger();
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
-    ArrayList<ArrayList<Object>> items = new ArrayList<>();
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
+    Collection<Collection<?>> items = new ArrayList<>();
     for (int i = 1; i < command.getProcessedCommand().size(); i++) {
-      ArrayList<Object> item = new ArrayList<>();
+      Collection<Object> item = new ArrayList<>();
       byte[] channelName = command.getProcessedCommand().get(i);
       long subscribedChannels =
           context.getPubSub().subscribe(new String(channelName), context, context.getClient());
@@ -46,25 +42,7 @@ public class SubscribeExecutor extends AbstractExecutor {
       items.add(item);
     }
 
-    writeResponse(command, context, items);
-  }
-
-  private void writeResponse(Command command, ExecutionHandlerContext context,
-      ArrayList<ArrayList<Object>> items) {
-    ByteBuf aggregatedResponse = context.getByteBufAllocator().buffer();
-    items.forEach(item -> {
-      ByteBuf response = null;
-      try {
-        response = Coder.getArrayResponse(context.getByteBufAllocator(), item);
-      } catch (CoderException e) {
-        logger.warn("Error encoding subscribe response", e);
-      }
-      if (response != null) {
-        aggregatedResponse.writeBytes(response);
-        response.release();
-      }
-    });
-    command.setResponse(aggregatedResponse);
+    return RedisResponse.flattenedArray(items);
   }
 
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/UnsubscribeExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/UnsubscribeExecutor.java
index c13ae2e..9d34de2 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/UnsubscribeExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/pubsub/UnsubscribeExecutor.java
@@ -18,13 +18,11 @@ package org.apache.geode.redis.internal.executor.pubsub;
 import java.util.ArrayList;
 import java.util.List;
 
-import io.netty.buffer.ByteBuf;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.logging.internal.log4j.api.LogService;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
-import org.apache.geode.redis.internal.netty.CoderException;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
@@ -32,12 +30,11 @@ public class UnsubscribeExecutor extends AbstractExecutor {
   private static final Logger logger = LogService.getLogger();
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     if (commandElems.size() < 2) {
-      command.setResponse(
-          Coder.getErrorResponse(context.getByteBufAllocator(), "not enough arguments"));
-      return;
+      return RedisResponse.error("not enough arguments");
     }
 
     byte[] channelName = commandElems.get(1);
@@ -49,14 +46,7 @@ public class UnsubscribeExecutor extends AbstractExecutor {
     items.add(channelName);
     items.add(subscriptionCount);
 
-    ByteBuf response = null;
-    try {
-      response = Coder.getArrayResponse(context.getByteBufAllocator(), items);
-    } catch (CoderException e) {
-      logger.warn("Error encoding unsubscribe response", e);
-    }
-
-    command.setResponse(response);
+    return RedisResponse.array(items);
   }
 
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/AuthExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/AuthExecutor.java
index bbddbaf..64d56fe 100644
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/AuthExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/AuthExecutor.java
@@ -28,7 +28,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class AuthExecutor implements Executor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/EchoExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/EchoExecutor.java
index d07fbfb..29fdd67 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/EchoExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/EchoExecutor.java
@@ -19,22 +19,21 @@ import java.util.List;
 
 import org.apache.geode.redis.internal.RedisConstants.ArityDef;
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class EchoExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     if (commandElems.size() < 2) {
-      command.setResponse(Coder.getErrorResponse(context.getByteBufAllocator(), ArityDef.ECHO));
-      return;
+      return RedisResponse.error(ArityDef.ECHO);
     }
 
-    byte[] echoMessage = commandElems.get(1);
-    respondBulkStrings(command, context, echoMessage);
+    return RedisResponse.bulkString(commandElems.get(1));
   }
 
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/PingExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/PingExecutor.java
index f20ef40..beb7533 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/PingExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/PingExecutor.java
@@ -16,7 +16,7 @@
 package org.apache.geode.redis.internal.executor.server;
 
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
@@ -25,8 +25,8 @@ public class PingExecutor extends AbstractExecutor {
   private final String PING_RESPONSE = "PONG";
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
-    command
-        .setResponse(Coder.getSimpleStringResponse(context.getByteBufAllocator(), PING_RESPONSE));
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
+    return RedisResponse.string(PING_RESPONSE);
   }
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/QuitExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/QuitExecutor.java
index f54a78d..fb7f64c 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/QuitExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/QuitExecutor.java
@@ -24,7 +24,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class QuitExecutor extends AbstractExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     return RedisResponse.string(RedisConstants.QUIT_RESPONSE);
   }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/ShutDownExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/ShutDownExecutor.java
index db6dc55..4dde3dd 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/ShutDownExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/ShutDownExecutor.java
@@ -16,12 +16,16 @@
 package org.apache.geode.redis.internal.executor.server;
 
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class ShutDownExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {}
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
+    return RedisResponse.nil();
+  }
 
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/TimeExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/TimeExecutor.java
index 6677cf6..885dcb4 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/TimeExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/server/TimeExecutor.java
@@ -15,37 +15,27 @@
  */
 package org.apache.geode.redis.internal.executor.server;
 
-import io.netty.buffer.ByteBuf;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.geode.redis.internal.executor.AbstractExecutor;
-import org.apache.geode.redis.internal.netty.Coder;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class TimeExecutor extends AbstractExecutor {
 
   @Override
-  public void executeCommand(Command command, ExecutionHandlerContext context) {
+  public RedisResponse executeCommand(Command command,
+      ExecutionHandlerContext context) {
+    List<String> results = new ArrayList<>();
     long timeStamp = System.currentTimeMillis();
     long seconds = timeStamp / 1000;
     long microSeconds = (timeStamp - (seconds * 1000)) * 1000;
-    byte[] secAr = Coder.longToBytes(seconds);
-    byte[] micAr = Coder.longToBytes(microSeconds);
 
-    ByteBuf response = context.getByteBufAllocator().buffer(50);
-    response.writeByte(Coder.ARRAY_ID);
-    response.writeByte(50); // #2
-    response.writeBytes(Coder.CRLFar);
-    response.writeByte(Coder.BULK_STRING_ID);
-    response.writeBytes(Coder.intToBytes(secAr.length));
-    response.writeBytes(Coder.CRLFar);
-    response.writeBytes(secAr);
-    response.writeBytes(Coder.CRLFar);
-    response.writeByte(Coder.BULK_STRING_ID);
-    response.writeBytes(Coder.intToBytes(micAr.length));
-    response.writeBytes(Coder.CRLFar);
-    response.writeBytes(micAr);
-    response.writeBytes(Coder.CRLFar);
-    command.setResponse(response);
+    results.add(Long.toString(seconds));
+    results.add(Long.toString(microSeconds));
+
+    return RedisResponse.array(results);
   }
 }
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SAddExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SAddExecutor.java
index d404bc9..da016d5 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SAddExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SAddExecutor.java
@@ -25,7 +25,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class SAddExecutor extends SetExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
 
     List<ByteArrayWrapper> commandElements = command.getProcessedCommandWrappers();
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SCardExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SCardExecutor.java
index e7f43ef..54d79a7 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SCardExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SCardExecutor.java
@@ -23,7 +23,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class SCardExecutor extends SetExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     ByteArrayWrapper key = command.getKey();
     RedisSetCommands redisSetCommands = createRedisSetCommands(context);
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SIsMemberExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SIsMemberExecutor.java
index 8c929aa..8a72834 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SIsMemberExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SIsMemberExecutor.java
@@ -23,7 +23,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class SIsMemberExecutor extends SetExecutor {
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     ByteArrayWrapper key = command.getKey();
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SMembersExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SMembersExecutor.java
index 1697179..22ebf97 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SMembersExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SMembersExecutor.java
@@ -24,7 +24,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class SMembersExecutor extends SetExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     ByteArrayWrapper key = command.getKey();
     RedisSetCommands redisSetCommands = createRedisSetCommands(context);
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SMoveExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SMoveExecutor.java
index 4e3ac00..4648c8f 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SMoveExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SMoveExecutor.java
@@ -32,7 +32,7 @@ public class SMoveExecutor extends SetExecutor {
   private static final int NOT_MOVED = 0;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SPopExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SPopExecutor.java
index c3eb9ca..9bfbf0e 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SPopExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SPopExecutor.java
@@ -25,7 +25,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class SPopExecutor extends SetExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     int popCount = 1;
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SRandMemberExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SRandMemberExecutor.java
index 838d68b..8fd87d4 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SRandMemberExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SRandMemberExecutor.java
@@ -28,7 +28,7 @@ public class SRandMemberExecutor extends SetExecutor {
   private static final String ERROR_NOT_NUMERIC = "The count provided must be numeric";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SRemExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SRemExecutor.java
index d7ff90b..3dc0395 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SRemExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SRemExecutor.java
@@ -24,7 +24,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class SRemExecutor extends SetExecutor {
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<ByteArrayWrapper> commandElements = command.getProcessedCommandWrappers();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SScanExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SScanExecutor.java
index 9300a6a..4a35d6f 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SScanExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SScanExecutor.java
@@ -30,7 +30,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class SScanExecutor extends AbstractScanExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SetOpExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SetOpExecutor.java
index f4bd1fb..343e3f8 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SetOpExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/set/SetOpExecutor.java
@@ -26,7 +26,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public abstract class SetOpExecutor extends SetExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     int setsStartIndex = 1;
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/AppendExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/AppendExecutor.java
index e50f0f7..f933018 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/AppendExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/AppendExecutor.java
@@ -27,7 +27,7 @@ public class AppendExecutor extends StringExecutor {
   private final int VALUE_INDEX = 2;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     ByteArrayWrapper key = command.getKey();
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitCountExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitCountExecutor.java
index e31c705..bde0c69 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitCountExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitCountExecutor.java
@@ -29,7 +29,7 @@ public class BitCountExecutor extends StringExecutor {
   private final String ERROR_NOT_INT = "The indexes provided must be numeric values";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitOpExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitOpExecutor.java
index 72a3ce1..f4e1168 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitOpExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitOpExecutor.java
@@ -27,7 +27,7 @@ public class BitOpExecutor extends StringExecutor {
   private static final String ERROR_NO_SUCH_OP = "Please specify a legal operation";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitPosExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitPosExecutor.java
index eb52636..d112c49 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitPosExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/BitPosExecutor.java
@@ -30,7 +30,7 @@ public class BitPosExecutor extends StringExecutor {
   private final String ERROR_BIT = "The bit must either be a 0 or 1";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
     if (commandElems.size() < 3) {
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/DecrByExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/DecrByExecutor.java
index 2b295dd..8dbd496 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/DecrByExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/DecrByExecutor.java
@@ -32,7 +32,7 @@ public class DecrByExecutor extends StringExecutor {
   private final int DECREMENT_INDEX = 2;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/DecrExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/DecrExecutor.java
index d369a07..37195e9 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/DecrExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/DecrExecutor.java
@@ -26,7 +26,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class DecrExecutor extends StringExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetBitExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetBitExecutor.java
index b891a12..869e22a 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetBitExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetBitExecutor.java
@@ -28,7 +28,7 @@ public class GetBitExecutor extends StringExecutor {
   private final String ERROR_NOT_INT = "The offset provided must be numeric";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetExecutor.java
index 5e14a93..3d86724 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetExecutor.java
@@ -23,7 +23,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class GetExecutor extends StringExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
 
     ByteArrayWrapper key = command.getKey();
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetRangeExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetRangeExecutor.java
index 18062e5..a3aceb9 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetRangeExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetRangeExecutor.java
@@ -31,7 +31,7 @@ public class GetRangeExecutor extends StringExecutor {
   private static final int stopIndex = 3;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetSetExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetSetExecutor.java
index f60a181..99d5cf6 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetSetExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/GetSetExecutor.java
@@ -28,7 +28,7 @@ public class GetSetExecutor extends StringExecutor {
   private final int VALUE_INDEX = 2;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrByExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrByExecutor.java
index 3865164..87a6c55 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrByExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrByExecutor.java
@@ -31,7 +31,7 @@ public class IncrByExecutor extends StringExecutor {
   private final int INCREMENT_INDEX = 2;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrByFloatExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrByFloatExecutor.java
index 5369f54..a3ac63f 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrByFloatExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrByFloatExecutor.java
@@ -39,7 +39,7 @@ public class IncrByFloatExecutor extends StringExecutor {
   private final int INCREMENT_INDEX = 2;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrExecutor.java
index 69270f5..88b0f40 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/IncrExecutor.java
@@ -25,7 +25,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
 public class IncrExecutor extends StringExecutor {
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MGetExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MGetExecutor.java
index e41f599..353f62a 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MGetExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MGetExecutor.java
@@ -27,7 +27,7 @@ import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 public class MGetExecutor extends StringExecutor {
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MSetExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MSetExecutor.java
index 2429890..9842fa4 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MSetExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MSetExecutor.java
@@ -27,7 +27,7 @@ public class MSetExecutor extends StringExecutor {
   private final String SUCCESS = "OK";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MSetNXExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MSetNXExecutor.java
index bfebc3d..8b7faf8 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MSetNXExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/MSetNXExecutor.java
@@ -31,7 +31,7 @@ public class MSetNXExecutor extends StringExecutor {
   private final int NOT_SET = 0;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetBitExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetBitExecutor.java
index c01546f..48a71d6 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetBitExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetBitExecutor.java
@@ -35,7 +35,7 @@ public class SetBitExecutor extends StringExecutor {
       "The offset is out of range, must be greater than or equal to 0  and at most 4294967295 (512MB)";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetEXExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetEXExecutor.java
index 69d2f0a..a8a17ae 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetEXExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetEXExecutor.java
@@ -39,7 +39,7 @@ public class SetEXExecutor extends StringExecutor implements Extendable {
   private final int VALUE_INDEX = 3;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetExecutor.java
index 2157c06..1cbd3cf 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetExecutor.java
@@ -32,7 +32,7 @@ public class SetExecutor extends StringExecutor {
   private final String SUCCESS = "OK";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
 
     List<byte[]> commandElems = command.getProcessedCommand();
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetNXExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetNXExecutor.java
index 0a63975..0c150c9 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetNXExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetNXExecutor.java
@@ -33,7 +33,7 @@ public class SetNXExecutor extends StringExecutor {
   private final int VALUE_INDEX = 2;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetRangeExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetRangeExecutor.java
index 0b08f76..79edf60 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetRangeExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/SetRangeExecutor.java
@@ -33,7 +33,7 @@ public class SetRangeExecutor extends StringExecutor {
       "The offset is out of range, must be greater than or equal to 0 and the offset added to the length of the value must be less than 536870911 (512MB), the maximum allowed size";
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/StrlenExecutor.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/StrlenExecutor.java
index d0dc033..cc9a4b0 100755
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/StrlenExecutor.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/executor/string/StrlenExecutor.java
@@ -27,7 +27,7 @@ public class StrlenExecutor extends StringExecutor {
   private final int KEY_DOES_NOT_EXIST = 0;
 
   @Override
-  public RedisResponse executeCommandWithResponse(Command command,
+  public RedisResponse executeCommand(Command command,
       ExecutionHandlerContext context) {
     List<byte[]> commandElems = command.getProcessedCommand();
 
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/netty/Coder.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/netty/Coder.java
index e04b5c8..ce470f6 100644
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/netty/Coder.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/netty/Coder.java
@@ -168,6 +168,18 @@ public class Coder {
     response.writeBytes(CRLFar);
   }
 
+  public static ByteBuf getFlattenedArrayResponse(ByteBufAllocator alloc,
+      Collection<Collection<?>> items)
+      throws CoderException {
+    ByteBuf response = alloc.buffer();
+
+    for (Object next : items) {
+      writeCollectionOrString(alloc, response, next);
+    }
+
+    return response;
+  }
+
   public static ByteBuf getArrayResponse(ByteBufAllocator alloc, Collection<?> items)
       throws CoderException {
     ByteBuf response = alloc.buffer();
@@ -175,26 +187,31 @@ public class Coder {
     response.writeBytes(intToBytes(items.size()));
     response.writeBytes(CRLFar);
     for (Object next : items) {
-      ByteBuf tmp = null;
-      try {
-        if (next instanceof Collection) {
-          Collection<?> nextItems = (Collection<?>) next;
-          tmp = getArrayResponse(alloc, nextItems);
-          response.writeBytes(tmp);
-        } else {
-          tmp = getBulkStringResponse(alloc, next);
-          response.writeBytes(tmp);
-        }
-      } finally {
-        if (tmp != null) {
-          tmp.release();
-        }
-      }
+      writeCollectionOrString(alloc, response, next);
     }
 
     return response;
   }
 
+  private static void writeCollectionOrString(ByteBufAllocator alloc, ByteBuf response, Object next)
+      throws CoderException {
+    ByteBuf tmp = null;
+    try {
+      if (next instanceof Collection) {
+        Collection<?> nextItems = (Collection<?>) next;
+        tmp = getArrayResponse(alloc, nextItems);
+        response.writeBytes(tmp);
+      } else {
+        tmp = getBulkStringResponse(alloc, next);
+        response.writeBytes(tmp);
+      }
+    } finally {
+      if (tmp != null) {
+        tmp.release();
+      }
+    }
+  }
+
   public static ByteBuf getScanResponse(ByteBufAllocator alloc, List<?> items) {
     if (items == null || items.isEmpty()) {
       return null;
diff --git a/geode-redis/src/main/java/org/apache/geode/redis/internal/netty/ExecutionHandlerContext.java b/geode-redis/src/main/java/org/apache/geode/redis/internal/netty/ExecutionHandlerContext.java
index 68ea7e9..a803bb3 100644
--- a/geode-redis/src/main/java/org/apache/geode/redis/internal/netty/ExecutionHandlerContext.java
+++ b/geode-redis/src/main/java/org/apache/geode/redis/internal/netty/ExecutionHandlerContext.java
@@ -233,12 +233,7 @@ public class ExecutionHandlerContext extends ChannelInboundHandlerAdapter {
     logResponse(response);
     moveSubscribeToNewEventLoopGroup(ctx, command);
 
-    // TODO: Clean this up once all Executors are using RedisResponse
-    if (response == null) {
-      writeToChannel(command.getResponse());
-    } else if (response != null) {
-      writeToChannel(response);
-    }
+    writeToChannel(response);
 
     if (command.isOfType(RedisCommandType.QUIT)) {
       channelInactive(ctx);
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/ExecutionHandlerContextJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/ExecutionHandlerContextJUnitTest.java
deleted file mode 100644
index cd258a0..0000000
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/ExecutionHandlerContextJUnitTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- *
- */
-package org.apache.geode.redis.internal;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufAllocator;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.ChannelPipeline;
-import io.netty.util.concurrent.EventExecutor;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import org.apache.geode.cache.Cache;
-import org.apache.geode.redis.internal.netty.Command;
-import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
-import org.apache.geode.redis.internal.pubsub.PubSub;
-
-/**
- * Test cases for ExecutionHandlerContext
- */
-public class ExecutionHandlerContextJUnitTest {
-  /**
-   *
-   * @throws Exception the exception
-   */
-  @Test
-  public void testChannelReadChannelHandlerContextObject() throws Exception {
-    Cache cache = Mockito.mock(Cache.class);
-
-    Channel ch = Mockito.mock(Channel.class);
-    ChannelPipeline channelPipeline = Mockito.mock(ChannelPipeline.class);
-    EventExecutor eventExecutor = Mockito.mock(EventExecutor.class);
-    ChannelHandlerContext channelHandlerContext = Mockito.mock(ChannelHandlerContext.class);
-    ByteBufAllocator alloc = Mockito.mock(ByteBufAllocator.class);
-    ByteBuf byteBuf = Mockito.mock(ByteBuf.class);
-    @SuppressWarnings("deprecation")
-    org.apache.geode.LogWriter logWriter = Mockito.mock(org.apache.geode.LogWriter.class);
-    Command msg = Mockito.mock(Command.class);
-    RegionProvider regionProvider = Mockito.mock(RegionProvider.class);
-    GeodeRedisServer server = Mockito.mock(GeodeRedisServer.class);
-    PubSub pubSub = Mockito.mock(PubSub.class);
-
-    Mockito.when(cache.getLogger()).thenReturn(logWriter);
-    Mockito.when(ch.alloc()).thenReturn(alloc);
-    Mockito.when(alloc.buffer(Mockito.anyInt())).thenReturn(byteBuf);
-    Mockito.when(ch.pipeline()).thenReturn(channelPipeline);
-    Mockito.when(channelPipeline.lastContext()).thenReturn(channelHandlerContext);
-    Mockito.when(channelHandlerContext.executor()).thenReturn(eventExecutor);
-    Mockito.when(msg.getCommandType()).thenReturn(RedisCommandType.UNKNOWN);
-
-    byte[] pwd = null;
-    ExecutionHandlerContext handler =
-        new ExecutionHandlerContext(ch, cache, regionProvider, server, pwd, pubSub, null);
-
-    ChannelHandlerContext ctx = null;
-    handler.channelRead(ctx, msg);
-
-  }
-
-}
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/UnknownExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/UnknownExecutorJUnitTest.java
index 3823127..cbe83f5 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/UnknownExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/UnknownExecutorJUnitTest.java
@@ -15,6 +15,8 @@
  */
 package org.apache.geode.redis.internal.executor;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 import io.netty.buffer.UnpooledByteBufAllocator;
 import org.junit.Test;
 import org.mockito.Mockito;
@@ -42,11 +44,9 @@ public class UnknownExecutorJUnitTest {
     UnpooledByteBufAllocator byteBuf = new UnpooledByteBufAllocator(false);
     Mockito.when(context.getByteBufAllocator()).thenReturn(byteBuf);
 
-    exe.executeCommand(command, context);
-
-    // verify the response was set
-    Mockito.verify(command).setResponse(Mockito.any());
+    RedisResponse response = exe.executeCommand(command, context);
 
+    assertThat(response.toString()).contains("ERR Unable to process unknown command");
   }
 
 }
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/ExpireAtExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/ExpireAtExecutorJUnitTest.java
index 43e1c3c..c951312 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/ExpireAtExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/ExpireAtExecutorJUnitTest.java
@@ -16,7 +16,7 @@
 
 package org.apache.geode.redis.internal.executor.key;
 
-import static java.nio.charset.Charset.defaultCharset;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -24,9 +24,9 @@ import java.util.ArrayList;
 import java.util.List;
 
 import io.netty.buffer.UnpooledByteBufAllocator;
-import org.assertj.core.api.AssertionsForClassTypes;
 import org.junit.Test;
 
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
@@ -39,10 +39,10 @@ public class ExpireAtExecutorJUnitTest {
     commandsAsBytesWithTooFewArguments.add("key".getBytes());
     Command command = new Command(commandsAsBytesWithTooFewArguments);
 
-    new ExpireAtExecutor().executeCommand(command, mockContext());
+    RedisResponse response =
+        new ExpireAtExecutor().executeCommand(command, mockContext());
 
-    AssertionsForClassTypes.assertThat(command.getResponse().toString(defaultCharset()))
-        .startsWith("-ERR The wrong number of arguments");
+    assertThat(response.toString()).startsWith("-ERR The wrong number of arguments");
   }
 
   @Test
@@ -54,10 +54,10 @@ public class ExpireAtExecutorJUnitTest {
     commandsAsBytesWithTooFewArguments.add("extra-argument".getBytes());
     Command command = new Command(commandsAsBytesWithTooFewArguments);
 
-    new ExpireAtExecutor().executeCommand(command, mockContext());
+    RedisResponse response =
+        new ExpireAtExecutor().executeCommand(command, mockContext());
 
-    AssertionsForClassTypes.assertThat(command.getResponse().toString(defaultCharset()))
-        .startsWith("-ERR The wrong number of arguments");
+    assertThat(response.toString()).startsWith("-ERR The wrong number of arguments");
   }
 
   @Test
@@ -68,10 +68,10 @@ public class ExpireAtExecutorJUnitTest {
     commandsAsBytesWithTooFewArguments.add("not-a-timestamp".getBytes());
     Command command = new Command(commandsAsBytesWithTooFewArguments);
 
-    new ExpireAtExecutor().executeCommand(command, mockContext());
+    RedisResponse response =
+        new ExpireAtExecutor().executeCommand(command, mockContext());
 
-    AssertionsForClassTypes.assertThat(command.getResponse().toString(defaultCharset()))
-        .startsWith("-ERR value is not an integer or out of range");
+    assertThat(response.toString()).startsWith("-ERR value is not an integer or out of range");
   }
 
   public ExecutionHandlerContext mockContext() {
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/ExpireExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/ExpireExecutorJUnitTest.java
index 9f8a61b..59cb1b8 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/ExpireExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/ExpireExecutorJUnitTest.java
@@ -16,7 +16,6 @@
 
 package org.apache.geode.redis.internal.executor.key;
 
-import static java.nio.charset.Charset.defaultCharset;
 import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -28,6 +27,7 @@ import io.netty.buffer.UnpooledByteBufAllocator;
 import org.junit.Test;
 
 import org.apache.geode.redis.internal.executor.Executor;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
@@ -41,10 +41,9 @@ public class ExpireExecutorJUnitTest {
     commandsAsBytesWithTooFewArguments.add("key".getBytes());
 
     Command command = new Command(commandsAsBytesWithTooFewArguments);
-    executor.executeCommand(command, mockContext());
+    RedisResponse response = executor.executeCommand(command, mockContext());
 
-    assertThat(command.getResponse().toString(defaultCharset()))
-        .startsWith("-ERR The wrong number of arguments");
+    assertThat(response.toString()).startsWith("-ERR The wrong number of arguments");
   }
 
   @Test
@@ -57,10 +56,9 @@ public class ExpireExecutorJUnitTest {
     commandsAsBytesWithTooManyArguments.add("Bonus!".getBytes());
     Command command = new Command(commandsAsBytesWithTooManyArguments);
 
-    executor.executeCommand(command, mockContext());
+    RedisResponse response = executor.executeCommand(command, mockContext());
 
-    assertThat(command.getResponse().toString(defaultCharset()))
-        .startsWith("-ERR The wrong number of arguments");
+    assertThat(response.toString()).startsWith("-ERR The wrong number of arguments");
   }
 
   @Test
@@ -72,10 +70,9 @@ public class ExpireExecutorJUnitTest {
     commandsAsBytesWithTooManyArguments.add("not a number".getBytes());
     Command command = new Command(commandsAsBytesWithTooManyArguments);
 
-    executor.executeCommand(command, mockContext());
+    RedisResponse response = executor.executeCommand(command, mockContext());
 
-    assertThat(command.getResponse().toString(defaultCharset()))
-        .startsWith("-ERR value is not an integer or out of range");
+    assertThat(response.toString()).startsWith("-ERR value is not an integer or out of range");
   }
 
   public ExecutionHandlerContext mockContext() {
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/PExpireAtExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/PExpireAtExecutorJUnitTest.java
index a69a4cd..6fd0f97 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/PExpireAtExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/PExpireAtExecutorJUnitTest.java
@@ -16,7 +16,7 @@
 
 package org.apache.geode.redis.internal.executor.key;
 
-import static java.nio.charset.Charset.defaultCharset;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -24,9 +24,9 @@ import java.util.ArrayList;
 import java.util.List;
 
 import io.netty.buffer.UnpooledByteBufAllocator;
-import org.assertj.core.api.AssertionsForClassTypes;
 import org.junit.Test;
 
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
@@ -39,10 +39,10 @@ public class PExpireAtExecutorJUnitTest {
     commandsAsBytesWithTooFewArguments.add("key".getBytes());
     Command command = new Command(commandsAsBytesWithTooFewArguments);
 
-    new PExpireAtExecutor().executeCommand(command, mockContext());
+    RedisResponse response =
+        new PExpireAtExecutor().executeCommand(command, mockContext());
 
-    AssertionsForClassTypes.assertThat(command.getResponse().toString(defaultCharset()))
-        .startsWith("-ERR The wrong number of arguments");
+    assertThat(response.toString()).startsWith("-ERR The wrong number of arguments");
   }
 
   @Test
@@ -54,10 +54,10 @@ public class PExpireAtExecutorJUnitTest {
     commandsAsBytesWithTooFewArguments.add("extra-argument".getBytes());
     Command command = new Command(commandsAsBytesWithTooFewArguments);
 
-    new PExpireAtExecutor().executeCommand(command, mockContext());
+    RedisResponse response =
+        new PExpireAtExecutor().executeCommand(command, mockContext());
 
-    AssertionsForClassTypes.assertThat(command.getResponse().toString(defaultCharset()))
-        .startsWith("-ERR The wrong number of arguments");
+    assertThat(response.toString()).startsWith("-ERR The wrong number of arguments");
   }
 
   @Test
@@ -68,10 +68,10 @@ public class PExpireAtExecutorJUnitTest {
     commandsAsBytesWithTooFewArguments.add("not-a-timestamp".getBytes());
     Command command = new Command(commandsAsBytesWithTooFewArguments);
 
-    new PExpireAtExecutor().executeCommand(command, mockContext());
+    RedisResponse response =
+        new PExpireAtExecutor().executeCommand(command, mockContext());
 
-    AssertionsForClassTypes.assertThat(command.getResponse().toString(defaultCharset()))
-        .startsWith("-ERR value is not an integer or out of range");
+    assertThat(response.toString()).startsWith("-ERR value is not an integer or out of range");
   }
 
 
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/PersistExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/PersistExecutorJUnitTest.java
index 616fe4c..f460f71 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/PersistExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/key/PersistExecutorJUnitTest.java
@@ -16,23 +16,19 @@
 
 package org.apache.geode.redis.internal.executor.key;
 
-import static java.nio.charset.Charset.defaultCharset;
 import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import io.netty.buffer.ByteBuf;
 import io.netty.buffer.UnpooledByteBufAllocator;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.ArgumentCaptor;
 
 import org.apache.geode.redis.internal.executor.Executor;
+import org.apache.geode.redis.internal.executor.RedisResponse;
 import org.apache.geode.redis.internal.netty.Command;
 import org.apache.geode.redis.internal.netty.ExecutionHandlerContext;
 
@@ -55,17 +51,12 @@ public class PersistExecutorJUnitTest {
     List<byte[]> commandsAsBytesWithTooFewArguments = new ArrayList<>();
     commandsAsBytesWithTooFewArguments.add("PERSIST".getBytes());
 
-    ArgumentCaptor<ByteBuf> argsErrorCaptor = ArgumentCaptor.forClass(ByteBuf.class);
-
     when(context.getByteBufAllocator()).thenReturn(byteBuf);
     when(command.getProcessedCommand()).thenReturn(commandsAsBytesWithTooFewArguments);
 
-    executor.executeCommand(command, context);
-    verify(command, times(1)).setResponse(argsErrorCaptor.capture());
+    RedisResponse response = executor.executeCommand(command, context);
 
-    List<ByteBuf> capturedErrors = argsErrorCaptor.getAllValues();
-    assertThat(capturedErrors.get(0).toString(defaultCharset()))
-        .startsWith("-ERR The wrong number of arguments");
+    assertThat(response.toString()).startsWith("-ERR The wrong number of arguments");
   }
 
   @Test
@@ -76,16 +67,11 @@ public class PersistExecutorJUnitTest {
     commandsAsBytesWithTooManyArguments.add("key".getBytes());
     commandsAsBytesWithTooManyArguments.add("Bonus!".getBytes());
 
-    ArgumentCaptor<ByteBuf> argsErrorCaptor = ArgumentCaptor.forClass(ByteBuf.class);
-
     when(context.getByteBufAllocator()).thenReturn(byteBuf);
     when(command.getProcessedCommand()).thenReturn(commandsAsBytesWithTooManyArguments);
 
-    executor.executeCommand(command, context);
-    verify(command, times(1)).setResponse(argsErrorCaptor.capture());
+    RedisResponse response = executor.executeCommand(command, context);
 
-    List<ByteBuf> capturedErrors = argsErrorCaptor.getAllValues();
-    assertThat(capturedErrors.get(0).toString(defaultCharset()))
-        .startsWith("-ERR The wrong number of arguments");
+    assertThat(response.toString()).startsWith("-ERR The wrong number of arguments");
   }
 }
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/GetRangeExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/GetRangeExecutorJUnitTest.java
index 83b8db3..a9da094 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/GetRangeExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/GetRangeExecutorJUnitTest.java
@@ -41,7 +41,7 @@ public class GetRangeExecutorJUnitTest {
     commandsAsBytesWithThreeArgs.add("1".getBytes());
     Command command = new Command(commandsAsBytesWithThreeArgs);
 
-    RedisResponse response = getRangeExecutor.executeCommandWithResponse(command, mockContext());
+    RedisResponse response = getRangeExecutor.executeCommand(command, mockContext());
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
@@ -58,7 +58,7 @@ public class GetRangeExecutorJUnitTest {
     commandsAsBytesWithFiveArgs.add("avocado".getBytes());
     Command command = new Command(commandsAsBytesWithFiveArgs);
 
-    RedisResponse response = getRangeExecutor.executeCommandWithResponse(command, mockContext());
+    RedisResponse response = getRangeExecutor.executeCommand(command, mockContext());
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
@@ -75,7 +75,7 @@ public class GetRangeExecutorJUnitTest {
     commandsAsBytesWithInvalidStartIndex.add("1".getBytes());
 
     Command command = new Command(commandsAsBytesWithInvalidStartIndex);
-    RedisResponse response = getRangeExecutor.executeCommandWithResponse(command, mockContext());
+    RedisResponse response = getRangeExecutor.executeCommand(command, mockContext());
 
     assertThat(response.toString())
         .startsWith("-ERR value is not an integer or out of range");
@@ -93,7 +93,7 @@ public class GetRangeExecutorJUnitTest {
     commandsAsBytesWithInvalidEndIndex.add("not-a-number".getBytes());
     Command command = new Command(commandsAsBytesWithInvalidEndIndex);
 
-    RedisResponse response = getRangeExecutor.executeCommandWithResponse(command, mockContext());
+    RedisResponse response = getRangeExecutor.executeCommand(command, mockContext());
 
     assertThat(response.toString())
         .startsWith("-ERR value is not an integer or out of range");
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/GetSetExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/GetSetExecutorJUnitTest.java
index 7f8123d..466d366 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/GetSetExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/GetSetExecutorJUnitTest.java
@@ -69,7 +69,7 @@ public class GetSetExecutorJUnitTest {
         "GETSET".getBytes());
     Command command = new Command(args);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
@@ -84,7 +84,7 @@ public class GetSetExecutorJUnitTest {
         "key2".getBytes());
     Command command = new Command(args);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/IncrExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/IncrExecutorJUnitTest.java
index 357c5db..883c89d 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/IncrExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/IncrExecutorJUnitTest.java
@@ -42,7 +42,7 @@ public class IncrExecutorJUnitTest {
     commandsAsBytes.add("INCR".getBytes());
     Command command = new Command(commandsAsBytes);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, mockContext());
+    RedisResponse response = executor.executeCommand(command, mockContext());
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
@@ -56,7 +56,7 @@ public class IncrExecutorJUnitTest {
     commandsAsBytes.add("spurious key".getBytes());
     Command command = new Command(commandsAsBytes);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, mockContext());
+    RedisResponse response = executor.executeCommand(command, mockContext());
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringMGetExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringMGetExecutorJUnitTest.java
index a4db5e0..9342582 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringMGetExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringMGetExecutorJUnitTest.java
@@ -52,7 +52,7 @@ public class StringMGetExecutorJUnitTest {
   public void testTooFewOptions() {
     List<byte[]> args = Arrays.asList("MGET".getBytes());
     Command command = new Command(args);
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
@@ -63,7 +63,7 @@ public class StringMGetExecutorJUnitTest {
     List<byte[]> args = Arrays.asList("MGET".getBytes());
 
     Command command = new Command(args);
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringMSetExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringMSetExecutorJUnitTest.java
index e028742..f20a515 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringMSetExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringMSetExecutorJUnitTest.java
@@ -41,7 +41,7 @@ public class StringMSetExecutorJUnitTest {
     ArrayList<byte[]> commandElems = new ArrayList<>();
     commandElems.add("MSET".getBytes());
     Command command = new Command(commandElems);
-    RedisResponse response = executor.executeCommandWithResponse(command, mockContext());
+    RedisResponse response = executor.executeCommand(command, mockContext());
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
@@ -53,7 +53,7 @@ public class StringMSetExecutorJUnitTest {
         "MSET".getBytes(),
         "key".getBytes());
     Command command = new Command(args);
-    RedisResponse response = executor.executeCommandWithResponse(command, mockContext());
+    RedisResponse response = executor.executeCommand(command, mockContext());
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringSetExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringSetExecutorJUnitTest.java
index a9a6cae..83c504f 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringSetExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StringSetExecutorJUnitTest.java
@@ -78,7 +78,7 @@ public class StringSetExecutorJUnitTest {
         "EX".getBytes());
     Command command = new Command(commandArgumentWithEXNoParameter);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .contains(RedisConstants.ERROR_SYNTAX);
@@ -94,7 +94,7 @@ public class StringSetExecutorJUnitTest {
         "NotANumberAtAll".getBytes());
     Command command = new Command(commandArgumentWithEXNoParameter);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .contains(RedisConstants.ERROR_NOT_INTEGER);
@@ -110,7 +110,7 @@ public class StringSetExecutorJUnitTest {
         "0".getBytes());
     Command command = new Command(commandArgumentWithEXNoParameter);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .contains(RedisConstants.ERROR_INVALID_EXPIRE_TIME);
@@ -126,7 +126,7 @@ public class StringSetExecutorJUnitTest {
 
     Command command = new Command(commandArgumentWithEXNoParameter);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .contains(RedisConstants.ERROR_SYNTAX);
@@ -144,7 +144,7 @@ public class StringSetExecutorJUnitTest {
         "30".getBytes());
     Command command = new Command(commandArgumentWithEXNoParameter);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .contains(RedisConstants.ERROR_SYNTAX);
@@ -160,7 +160,7 @@ public class StringSetExecutorJUnitTest {
         "XX".getBytes());
     Command command = new Command(commandArgumentWithEXNoParameter);
 
-    RedisResponse response = executor.executeCommandWithResponse(command, context);
+    RedisResponse response = executor.executeCommand(command, context);
 
     assertThat(response.toString())
         .contains(RedisConstants.ERROR_SYNTAX);
diff --git a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StrlenExecutorJUnitTest.java b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StrlenExecutorJUnitTest.java
index 7bd1c96..7ac7a07 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StrlenExecutorJUnitTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/internal/executor/string/StrlenExecutorJUnitTest.java
@@ -49,7 +49,7 @@ public class StrlenExecutorJUnitTest {
     commandsAsBytes.add("STRLEN".getBytes());
     Command command = new Command(commandsAsBytes);
 
-    RedisResponse response = strlenExecutor.executeCommandWithResponse(command, context);
+    RedisResponse response = strlenExecutor.executeCommand(command, context);
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");
@@ -64,7 +64,7 @@ public class StrlenExecutorJUnitTest {
     commandsAsBytes.add("BONUS!".getBytes());
     Command command = new Command(commandsAsBytes);
 
-    RedisResponse response = strlenExecutor.executeCommandWithResponse(command, context);
+    RedisResponse response = strlenExecutor.executeCommand(command, context);
 
     assertThat(response.toString())
         .startsWith("-ERR The wrong number of arguments or syntax was provided");