/*
* 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();
}