code: @BetaApi(
        "The surface for long-running operations is not stable yet and may change in the future.")
    public final OperationFuture<Instance, Any> updateInstanceAsync(UpdateInstanceRequest request) {
      return updateInstanceOperationCallable().futureCall(request);
    }
docs: Updates the metadata and configuration of a specific Redis instance.
  
  <p>Completed longrunning.Operation will contain the new instance object in the response field.
  The returned operation is automatically deleted after a few hours, so there is no need to call
  DeleteOperation.
  
  <p>Sample code:
  
  <pre><code>
  try (CloudRedisClient cloudRedisClient = CloudRedisClient.create()) {
  String pathsElement = "display_name";
  String pathsElement2 = "memory_size_gb";
  List&lt;String&gt; paths = Arrays.asList(pathsElement, pathsElement2);
  FieldMask updateMask = FieldMask.newBuilder()
  .addAllPaths(paths)
  .build();
  String displayName = "UpdatedDisplayName";
  int memorySizeGb = 4;
  Instance instance = Instance.newBuilder()
  .setDisplayName(displayName)
  .setMemorySizeGb(memorySizeGb)
  .build();
  UpdateInstanceRequest request = UpdateInstanceRequest.newBuilder()
  .setUpdateMask(updateMask)
  .setInstance(instance)
  .build();
  Instance response = cloudRedisClient.updateInstanceAsync(request).get();
  }
  </code></pre>
  
  @param request The request object containing all of the parameters for the API call.
  @throws com.google.api.gax.rpc.ApiException if the remote call fails