@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);
    try {
      ValueWrapper oldValWrapper = r.get(key);
      if (oldValWrapper != null) {
        byte[] oldVal = oldValWrapper.getValue();
        byte[] prependVal = value;
        byte[] newVal = new byte[oldVal.length + prependVal.length];
        System.arraycopy(prependVal, 0, newVal, 0, prependVal.length);
        System.arraycopy(oldVal, 0, newVal, prependVal.length, oldVal.length);
        ValueWrapper val = ValueWrapper.getWrappedValue(newVal, flags);
        r.put(key, val);
        if (isQuiet()) {
          return null;
        }
        response.putShort(POSITION_RESPONSE_STATUS, ResponseStatus.NO_ERROR.asShort());
        response.putLong(POSITION_CAS, val.getVersion());
      } else {
        response.putShort(POSITION_RESPONSE_STATUS, ResponseStatus.KEY_NOT_FOUND.asShort());
      }
    } catch (Exception e) {
      response = handleBinaryException(key, request, response, "prepend", e);
    }
    return response;
  }
"prepend" means "add this data to an existing key before existing data".
geode-memcached/src/main/java/org/apache/geode/internal/memcached/commands/PrependCommand.java