/*
 * Copyright 2019 Red Hat, Inc.
 * <p>
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * and Apache License v2.0 which accompanies this distribution.
 * <p>
 * The Eclipse Public License is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * <p>
 * The Apache License v2.0 is available at
 * http://www.opensource.org/licenses/apache2.0.php
 * <p>
 * You may elect to redistribute this code under either of these licenses.
 */
package io.vertx.redis.client;

import io.vertx.codegen.annotations.Fluent;
import io.vertx.codegen.annotations.Nullable;
import io.vertx.codegen.annotations.VertxGen;
import io.vertx.core.AsyncResult;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.net.SocketAddress;
import io.vertx.core.streams.ReadStream;
import io.vertx.redis.client.impl.RedisClient;
import io.vertx.redis.client.impl.RedisClusterClient;
import io.vertx.redis.client.impl.RedisSentinelClient;

import java.util.List;

A simple Redis client.
/** * A simple Redis client. */
@VertxGen public interface Redis extends ReadStream<Response> {
Connect to redis, the onConnect will get the Redis instance. This connection will use the default options which are connect to a standalone server on the default port on "localhost".
/** * Connect to redis, the {@code onConnect} will get the {@link Redis} instance. * * This connection will use the default options which are connect * to a standalone server on the default port on "localhost". */
static Redis createClient(Vertx vertx, SocketAddress address) { return createClient(vertx, new RedisOptions().setEndpoint(address)); }
Connect to redis, the onConnect will get the Redis instance.
/** * Connect to redis, the {@code onConnect} will get the {@link Redis} instance. */
static Redis createClient(Vertx vertx, RedisOptions options) { switch (options.getType()) { case STANDALONE: return RedisClient.create(vertx, options); case SENTINEL: return RedisSentinelClient.create(vertx, options); case CLUSTER: return RedisClusterClient.create(vertx, options); default: throw new IllegalStateException("Unknown Redis Client type: " + options.getType()); } }
Connects to the redis server.
Params:
  • handler – the async result handler
Returns:a reference to this, so the API can be used fluently
/** * Connects to the redis server. * * @param handler the async result handler * @return a reference to this, so the API can be used fluently */
@Fluent Redis connect(Handler<AsyncResult<Redis>> handler);
Set an exception handler on the read stream.
Params:
  • handler – the exception handler
Returns:a reference to this, so the API can be used fluently
/** * Set an exception handler on the read stream. * * @param handler the exception handler * @return a reference to this, so the API can be used fluently */
@Fluent Redis exceptionHandler(Handler<Throwable> handler);
Set a data handler. As data is read, the handler will be called with the data.
Returns:a reference to this, so the API can be used fluently
/** * Set a data handler. As data is read, the handler will be called with the data. * * @return a reference to this, so the API can be used fluently */
@Fluent Redis handler(Handler<Response> handler);
Pause the ReadStream, it sets the buffer in fetch mode and clears the actual demand.

While it's paused, no data will be sent to the data handler.

Returns:a reference to this, so the API can be used fluently
/** * Pause the {@code ReadStream}, it sets the buffer in {@code fetch} mode and clears the actual demand. * <p> * While it's paused, no data will be sent to the data {@code handler}. * * @return a reference to this, so the API can be used fluently */
@Fluent Redis pause();
Resume reading, and sets the buffer in flowing mode.

If the ReadStream has been paused, reading will recommence on it.
Returns:a reference to this, so the API can be used fluently
/** * Resume reading, and sets the buffer in {@code flowing} mode. * <p/> * If the {@code ReadStream} has been paused, reading will recommence on it. * * @return a reference to this, so the API can be used fluently */
@Fluent Redis resume();
Fetch the specified amount of elements. If the ReadStream has been paused, reading will recommence with the specified amount of items, otherwise the specified amount will be added to the current stream demand.
Returns:a reference to this, so the API can be used fluently
/** * Fetch the specified {@code amount} of elements. If the {@code ReadStream} has been paused, reading will * recommence with the specified {@code amount} of items, otherwise the specified {@code amount} will * be added to the current stream demand. * * @return a reference to this, so the API can be used fluently */
@Fluent Redis fetch(long amount);
Set an end handler. Once the stream has ended, and there is no more data to be read, this handler will be called.
Returns:a reference to this, so the API can be used fluently
/** * Set an end handler. Once the stream has ended, and there is no more data to be read, this handler will be called. * * @return a reference to this, so the API can be used fluently */
@Fluent Redis endHandler(@Nullable Handler<Void> endHandler); @Fluent Redis send(Request command, Handler<AsyncResult<@Nullable Response>> onSend); @Fluent Redis batch(List<Request> commands, Handler<AsyncResult<List<@Nullable Response>>> handler);
Returns the address associated with this client.
Returns:the address.
/** * Returns the address associated with this client. * @return the address. */
SocketAddress socketAddress(); void close(); }