@Override
  public ByteBuffer processBinaryStorageCommand(Object key, byte[] value, long cas, int flags,
      Cache cache, RequestReader request) {
    ByteBuffer response = request.getResponse();
    Region<Object, ValueWrapper> r = getMemcachedRegion(cache);
    ValueWrapper val = ValueWrapper.getWrappedValue(value, flags);
    boolean success = false;

    try {
      if (cas != 0L) {
        ValueWrapper expected = ValueWrapper.getDummyValue(cas);
        success = r.replace(key, expected, val);
      } else {
        success = r.replace(key, val) != null;
      }
    } catch (Exception e) {
      return handleBinaryException(key, request, response, "replace", e);
    }

    if (getLogger().fineEnabled()) {
      getLogger().fine("replace:key:" + key + " cas:" + cas + " success:" + success);
    }

    // set status
    if (success) {
      if (isQuiet()) {
        return null;
      }
      response.putShort(POSITION_RESPONSE_STATUS, ResponseStatus.NO_ERROR.asShort());
      response.putLong(POSITION_CAS, val.getVersion());
    } else {
      if (cas != 0L) {
        response.putShort(POSITION_RESPONSE_STATUS, ResponseStatus.KEY_EXISTS.asShort());
      } else {
        response.putShort(POSITION_RESPONSE_STATUS, ResponseStatus.KEY_NOT_FOUND.asShort());
      }
      // set CAS
      // response.putLong(POSITION_CAS, val.getVersion());
    }
    return response;
  }
general format of the command is:<br>
<code>
&lt;command name&gt; &lt;key&gt; &lt;flags&gt; &lt;exptime&gt; &lt;bytes&gt; [noreply]\r\n
</code><br>

"replace" means "store this data, but only if the server *does* already hold data for this key".
geode-memcached/src/main/java/org/apache/geode/internal/memcached/commands/ReplaceCommand.java