package io.vertx.redis.impl;
import io.vertx.core.AsyncResult;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.core.net.SocketAddress;
import io.vertx.redis.RedisClient;
import io.vertx.redis.RedisOptions;
import io.vertx.redis.RedisTransaction;
import io.vertx.redis.Script;
import io.vertx.redis.client.Command;
import io.vertx.redis.client.Redis;
import io.vertx.redis.client.Request;
import io.vertx.redis.client.Response;
import io.vertx.redis.client.ResponseType;
import io.vertx.redis.op.*;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
import static io.vertx.redis.client.Command.*;
public final class RedisClientImpl implements RedisClient {
private final Vertx vertx;
private final RedisOptions options;
private final AtomicReference<CompletableFuture<Redis>> redis = new AtomicReference<>();
public RedisClientImpl(Vertx vertx, RedisOptions options) {
this.vertx = vertx;
this.options = options;
}
@SuppressWarnings("unchecked")
private static List<?> toPayload(Object... parameters) {
List<Object> result = new ArrayList<>(parameters.length);
for (Object param : parameters) {
if (param instanceof JsonArray) {
param = ((JsonArray) param).getList();
}
if (param instanceof JsonObject) {
param = ((JsonObject) param).getMap();
}
if (param instanceof Collection) {
((Collection) param).stream().filter(Objects::nonNull).forEach(result::add);
} else if (param instanceof Map) {
for (Map.Entry<?, ?> pair : ((Map<?, ?>) param).entrySet()) {
result.add(pair.getKey());
result.add(pair.getValue());
}
} else if (param instanceof Stream) {
((Stream) param).forEach(e -> {
if (e instanceof Object[]) {
Collections.addAll(result, (Object[]) e);
} else {
result.add(e);
}
});
} else if (param != null) {
result.add(param);
}
}
return result;
}
private void send(Command command, List arguments, Handler<AsyncResult<Response>> handler) {
final Request req = Request.cmd(command);
if (arguments != null) {
for (Object o : arguments) {
if (o == null) {
req.nullArg();
} else if (o instanceof Buffer) {
req.arg((Buffer) o);
} else {
req.arg(o.toString());
}
}
}
CompletableFuture<Redis> fut = redis.get();
if (fut == null) {
CompletableFuture f = new CompletableFuture<>();
if (redis.compareAndSet(null, f)) {
fut = f;
Redis.createClient(vertx, new io.vertx.redis.client.RedisOptions()
.setNetClientOptions(options)
.setEndpoint(options.isDomainSocket() ? SocketAddress.domainSocketAddress(options.getDomainSocketAddress()) : SocketAddress.inetSocketAddress(options.getPort(), options.getHost()))
.setPassword(options.getAuth())
.setSelect(options.getSelect())).connect(onReady -> {
if (onReady.succeeded()) {
f.complete(onReady.result());
} else {
f.completeExceptionally(onReady.cause());
}
});
} else {
fut = redis.get();
}
}
fut.whenComplete((client, err) -> {
if (err == null) {
client.send(req, handler);
} else {
handler.handle(Future.failedFuture(err));
}
});
}
private void sendLong(Command command, List arguments, Handler<AsyncResult<Long>> handler) {
send(command, arguments, ar -> {
if (ar.failed()) {
handler.handle(Future.failedFuture(ar.cause()));
} else {
handler.handle(Future.succeededFuture(ar.result().toLong()));
}
});
}
private void sendString(Command command, List arguments, Handler<AsyncResult<String>> handler) {
send(command, arguments, ar -> {
if (ar.failed()) {
handler.handle(Future.failedFuture(ar.cause()));
} else {
handler.handle(Future.succeededFuture(ar.result() != null ? ar.result().toString() : null));
}
});
}
private static JsonArray toJsonArray(Response response) {
final JsonArray json = new JsonArray();
if (response.type() != ResponseType.MULTI) {
switch (response.type()) {
case INTEGER:
json.add(response.toLong());
break;
case SIMPLE:
case BULK:
json.add(response.toString());
break;
}
return json;
}
for (Response r : response) {
if (r == null) {
json.addNull();
} else {
switch (r.type()) {
case INTEGER:
json.add(r.toLong());
break;
case SIMPLE:
case BULK:
json.add(r.toString());
break;
case MULTI:
json.add(toJsonArray(r));
break;
}
}
}
return json;
}
private void sendJsonArray(Command command, List arguments, Handler<AsyncResult<JsonArray>> handler) {
send(command, arguments, ar -> {
if (ar.failed()) {
handler.handle(Future.failedFuture(ar.cause()));
} else {
handler.handle(Future.succeededFuture(ar.result() != null ? toJsonArray(ar.result()) : null));
}
});
}
private void sendVoid(Command command, List arguments, Handler<AsyncResult<Void>> handler) {
send(command, arguments, ar -> {
if (ar.failed()) {
handler.handle(Future.failedFuture(ar.cause()));
} else {
handler.handle(Future.succeededFuture());
}
});
}
private void sendBuffer(Command command, List arguments, Handler<AsyncResult<Buffer>> handler) {
send(command, arguments, ar -> {
if (ar.failed()) {
handler.handle(Future.failedFuture(ar.cause()));
} else {
handler.handle(Future.succeededFuture(ar.result().toBuffer()));
}
});
}
private static JsonObject toJsonObject(Response response) {
final JsonObject json = new JsonObject();
for (String key : response.getKeys()) {
Response value = response.get(key);
switch (value.type()) {
case INTEGER:
json.put(key, value.toLong());
break;
case SIMPLE:
case BULK:
json.put(key, value.toString());
break;
case MULTI:
json.put(key, toJsonArray(value));
break;
}
}
return json;
}
private void sendJsonObject(Command command, List arguments, Handler<AsyncResult<JsonObject>> handler) {
send(command, arguments, ar -> {
if (ar.failed()) {
handler.handle(Future.failedFuture(ar.cause()));
} else {
handler.handle(Future.succeededFuture(toJsonObject(ar.result())));
}
});
}
@Override
public void close(Handler<AsyncResult<Void>> handler) {
CompletableFuture<Redis> prev = redis.getAndSet(null);
if (prev != null) {
prev.whenComplete((client, err) -> {
if (err == null) {
client.close();
if (handler != null) {
handler.handle(Future.succeededFuture());
}
} else {
if (handler != null) {
handler.handle(Future.failedFuture(err.getCause()));
}
}
});
}
}
@Override
public RedisClient append(String key, String value, Handler<AsyncResult<Long>> handler) {
sendLong(APPEND, toPayload(key, value), handler);
return this;
}
@Override
public RedisClient auth(String password, Handler<AsyncResult<String>> handler) {
sendString(AUTH, toPayload(password), handler);
return this;
}
@Override
public RedisClient bgrewriteaof(Handler<AsyncResult<String>> handler) {
sendString(BGREWRITEAOF, null, handler);
return this;
}
@Override
public RedisClient bgsave(Handler<AsyncResult<String>> handler) {
sendString(BGSAVE, null, handler);
return this;
}
@Override
public RedisClient bitcount(String key, Handler<AsyncResult<Long>> handler) {
sendLong(BITCOUNT, toPayload(key), handler);
return this;
}
public RedisClient bitcountRange(String key, long start, long end, Handler<AsyncResult<Long>> handler) {
sendLong(BITCOUNT, toPayload(key, start, end), handler);
return this;
}
@Override
public RedisClient bitop(BitOperation operation, String destkey, List<String> keys, Handler<AsyncResult<Long>> handler) {
sendLong(BITOP, toPayload(operation.name(), destkey, keys), handler);
return this;
}
@Override
public RedisClient bitpos(String key, int bit, Handler<AsyncResult<Long>> handler) {
sendLong(BITPOS, toPayload(key, bit), handler);
return this;
}
@Override
public RedisClient bitposFrom(String key, int bit, int start, Handler<AsyncResult<Long>> handler) {
sendLong(BITPOS, toPayload(key, bit, start), handler);
return this;
}
@Override
public RedisClient bitposRange(String key, int bit, int start, int stop, Handler<AsyncResult<Long>> handler) {
sendLong(BITPOS, toPayload(key, bit, start, stop), handler);
return this;
}
@Override
public RedisClient blpop(String key, int seconds, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(BLPOP, toPayload(key, seconds), handler);
return this;
}
@Override
public RedisClient blpopMany(List<String> keys, int seconds, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(BLPOP, toPayload(keys, seconds), handler);
return this;
}
@Override
public RedisClient brpop(String key, int seconds, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(BRPOP, toPayload(key, seconds), handler);
return this;
}
@Override
public RedisClient brpopMany(List<String> keys, int seconds, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(BRPOP, toPayload(keys, seconds), handler);
return this;
}
@Override
public RedisClient brpoplpush(String key, String destkey, int seconds, Handler<AsyncResult<String>> handler) {
sendString(BRPOPLPUSH, toPayload(key, destkey, seconds), handler);
return this;
}
@Override
public RedisClient clientKill(KillFilter filter, Handler<AsyncResult<Long>> handler) {
sendLong(CLIENT, toPayload("kill", filter.toJsonArray().getList()), handler);
return this;
}
@Override
public RedisClient clientList(Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("list"), handler);
return this;
}
@Override
public RedisClient clientGetname(Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("GETNAME"), handler);
return this;
}
@Override
public RedisClient clientPause(long millis, Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("PAUSE", millis), handler);
return this;
}
@Override
public RedisClient clientSetname(String name, Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("SETNAME", name), handler);
return this;
}
@Override
public RedisClient clusterAddslots(List<Long> slots, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("ADDSLOTS"), handler);
return this;
}
@Override
public RedisClient clusterCountFailureReports(String nodeId, Handler<AsyncResult<Long>> handler) {
sendLong(CLUSTER, toPayload("COUNT-FAILURE-REPORTS", nodeId), handler);
return this;
}
@Override
public RedisClient clusterCountkeysinslot(long slot, Handler<AsyncResult<Long>> handler) {
sendLong(CLUSTER, toPayload("COUNTKEYSINSLOT", slot), handler);
return this;
}
@Override
public RedisClient clusterDelslots(long slot, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("DELSLOTS", slot), handler);
return this;
}
@Override
public RedisClient clusterDelslotsMany(List<Long> slots, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("DELSLOTS", slots), handler);
return this;
}
@Override
public RedisClient clusterFailover(Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("FAILOVER"), handler);
return this;
}
@Override
public RedisClient clusterFailOverWithOptions(FailoverOptions options, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("FAILOVER", options), handler);
return this;
}
@Override
public RedisClient clusterForget(String nodeId, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("FORGET", nodeId), handler);
return this;
}
@Override
public RedisClient clusterGetkeysinslot(long slot, long count, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(CLUSTER, toPayload("GETKEYSINSLOT", slot, count), handler);
return this;
}
@Override
public RedisClient clusterInfo(Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(CLUSTER, toPayload("INFO"), handler);
return this;
}
@Override
public RedisClient clusterKeyslot(String key, Handler<AsyncResult<Long>> handler) {
sendLong(CLUSTER, toPayload("KEYSLOT", key), handler);
return this;
}
@Override
public RedisClient clusterMeet(String ip, long port, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("MEET", ip, port), handler);
return this;
}
@Override
public RedisClient clusterNodes(Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(CLUSTER, toPayload("NODES"), handler);
return this;
}
@Override
public RedisClient clusterReplicate(String nodeId, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("REPLICATE", nodeId), handler);
return this;
}
@Override
public RedisClient clusterReset(Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("RESET"), handler);
return this;
}
@Override
public RedisClient clusterResetWithOptions(ResetOptions options, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("RESET", options), handler);
return this;
}
@Override
public RedisClient clusterSaveconfig(Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("SAVECONFIG"), handler);
return this;
}
@Override
public RedisClient clusterSetConfigEpoch(long epoch, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("SET-CONFIG-EPOCH", epoch), handler);
return this;
}
@Override
public RedisClient clusterSetslot(long slot, SlotCmd subcommand, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("SETSLOT", slot, subcommand), handler);
return this;
}
@Override
public RedisClient clusterSetslotWithNode(long slot, SlotCmd subcommand, String nodeId, Handler<AsyncResult<Void>> handler) {
sendVoid(CLUSTER, toPayload("SETSLOT", slot, subcommand, nodeId), handler);
return this;
}
@Override
public RedisClient clusterSlaves(String nodeId, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(CLUSTER, toPayload("SLAVES", nodeId), handler);
return this;
}
@Override
public RedisClient clusterSlots(Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(CLUSTER, toPayload("SLOTS"), handler);
return this;
}
@Override
public RedisClient command(Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(COMMAND, null, handler);
return this;
}
@Override
public RedisClient commandCount(Handler<AsyncResult<Long>> handler) {
sendLong(COMMAND, toPayload("COUNT"), handler);
return this;
}
@Override
public RedisClient commandGetkeys(Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(COMMAND, toPayload("GETKEYS"), handler);
return this;
}
@Override
public RedisClient commandInfo(List<String> commands, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(COMMAND, toPayload("INFO", commands), handler);
return this;
}
@Override
public RedisClient configGet(String parameter, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(CONFIG, toPayload("GET", parameter), handler);
return this;
}
@Override
public RedisClient configRewrite(Handler<AsyncResult<String>> handler) {
sendString(CONFIG, toPayload("REWRITE"), handler);
return this;
}
@Override
public RedisClient configSet(String parameter, String value, Handler<AsyncResult<String>> handler) {
sendString(CONFIG, toPayload("SET", parameter, value), handler);
return this;
}
@Override
public RedisClient configResetstat(Handler<AsyncResult<String>> handler) {
sendString(CONFIG, toPayload("RESETSTAT"), handler);
return this;
}
@Override
public RedisClient dbsize(Handler<AsyncResult<Long>> handler) {
sendLong(DBSIZE, null, handler);
return this;
}
@Override
public RedisClient debugObject(String key, Handler<AsyncResult<String>> handler) {
sendString(DEBUG, toPayload("OBJECT", key), handler);
return this;
}
@Override
public RedisClient debugSegfault(Handler<AsyncResult<String>> handler) {
sendString(DEBUG, toPayload("SEGFAULT"), handler);
return this;
}
@Override
public RedisClient decr(String key, Handler<AsyncResult<Long>> handler) {
sendLong(DECR, toPayload(key), handler);
return this;
}
@Override
public RedisClient decrby(String key, long decrement, Handler<AsyncResult<Long>> handler) {
sendLong(DECRBY, toPayload(key, decrement), handler);
return this;
}
@Override
public RedisClient del(String key, Handler<AsyncResult<Long>> handler) {
sendLong(DEL, toPayload(key), handler);
return this;
}
@Override
public RedisClient delMany(List<String> keys, Handler<AsyncResult<Long>> handler) {
sendLong(DEL, toPayload(keys), handler);
return this;
}
@Override
public RedisClient dump(String key, Handler<AsyncResult<String>> handler) {
sendString(DUMP, toPayload(key), dump -> {
if (dump.failed()) {
handler.handle(dump);
} else {
handler.handle(Future.succeededFuture(RedisEncoding.encode(dump.result())));
}
});
return this;
}
@Override
public RedisClient echo(String message, Handler<AsyncResult<String>> handler) {
sendString(ECHO, toPayload(message), handler);
return this;
}
@Override
public RedisClient eval(String script, List<String> keys, List<String> args, Handler<AsyncResult<JsonArray>> handler) {
keys = (keys != null) ? keys : Collections.emptyList();
args = (args != null) ? args : Collections.emptyList();
sendJsonArray(EVAL, toPayload(script, keys.size(), keys, args), handler);
return this;
}
@Override
public RedisClient evalsha(String sha1, List<String> keys, List<String> args, Handler<AsyncResult<JsonArray>> handler) {
keys = (keys != null) ? keys : Collections.emptyList();
args = (args != null) ? args : Collections.emptyList();
sendJsonArray(EVALSHA, toPayload(sha1, keys.size(), keys, args), handler);
return this;
}
@Override
public RedisClient evalScript(Script script, List<String> keys, List<String> args, Handler<AsyncResult<JsonArray>> handler) {
this.evalsha(script.getSha1(), keys, args, res -> {
if (res.failed() && res.cause().getMessage().startsWith("NOSCRIPT")) {
this.eval(script.getScript(), keys, args, handler);
} else {
handler.handle(res);
}
});
return this;
}
@Override
public RedisClient exists(String key, Handler<AsyncResult<Long>> handler) {
sendLong(EXISTS, toPayload(key), handler);
return this;
}
@Override
public RedisClient existsMany(List<String> keys, Handler<AsyncResult<Long>> handler) {
sendLong(EXISTS, toPayload(keys), handler);
return this;
}
@Override
public RedisClient expire(String key, long seconds, Handler<AsyncResult<Long>> handler) {
sendLong(EXPIRE, toPayload(key, seconds), handler);
return this;
}
@Override
public RedisClient expireat(String key, long seconds, Handler<AsyncResult<Long>> handler) {
sendLong(EXPIREAT, toPayload(key, seconds), handler);
return this;
}
@Override
public RedisClient flushall(Handler<AsyncResult<String>> handler) {
sendString(FLUSHALL, null, handler);
return this;
}
@Override
public RedisClient flushdb(Handler<AsyncResult<String>> handler) {
sendString(FLUSHDB, null, handler);
return this;
}
@Override
public RedisClient get(String key, Handler<AsyncResult<String>> handler) {
sendString(GET, toPayload(key), handler);
return this;
}
@Override
public RedisClient getBinary(String key, Handler<AsyncResult<Buffer>> handler) {
sendBuffer(GET, toPayload(key), handler);
return this;
}
@Override
public RedisClient getbit(String key, long offset, Handler<AsyncResult<Long>> handler) {
sendLong(GETBIT, toPayload(key, offset), handler);
return this;
}
@Override
public RedisClient getrange(String key, long start, long end, Handler<AsyncResult<String>> handler) {
sendString(GETRANGE, toPayload(key, start, end), handler);
return this;
}
@Override
public RedisClient getset(String key, String value, Handler<AsyncResult<String>> handler) {
sendString(GETSET, toPayload(key, value), handler);
return this;
}
@Override
public RedisClient hdel(String key, String field, Handler<AsyncResult<Long>> handler) {
sendLong(HDEL, toPayload(key, field), handler);
return this;
}
@Override
public RedisClient hdelMany(String key, List<String> fields, Handler<AsyncResult<Long>> handler) {
sendLong(HDEL, toPayload(key, fields), handler);
return this;
}
@Override
public RedisClient hexists(String key, String field, Handler<AsyncResult<Long>> handler) {
sendLong(HEXISTS, toPayload(key, field), handler);
return this;
}
@Override
public RedisClient hget(String key, String field, Handler<AsyncResult<String>> handler) {
sendString(HGET, toPayload(key, field), handler);
return this;
}
@Override
public RedisClient hgetall(String key, Handler<AsyncResult<JsonObject>> handler) {
sendJsonObject(HGETALL, toPayload(key), handler);
return this;
}
@Override
public RedisClient hincrby(String key, String field, long increment, Handler<AsyncResult<Long>> handler) {
sendLong(HINCRBY, toPayload(key, field, increment), handler);
return this;
}
@Override
public RedisClient hincrbyfloat(String key, String field, double increment, Handler<AsyncResult<String>> handler) {
sendString(HINCRBYFLOAT, toPayload(key, field, increment), handler);
return this;
}
@Override
public RedisClient hkeys(String key, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(HKEYS, toPayload(key), handler);
return this;
}
@Override
public RedisClient hlen(String key, Handler<AsyncResult<Long>> handler) {
sendLong(HLEN, toPayload(key), handler);
return this;
}
@Override
public RedisClient hmget(String key, List<String> fields, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(HMGET, toPayload(key, fields), handler);
return this;
}
@Override
public RedisClient hmset(String key, JsonObject values, Handler<AsyncResult<String>> handler) {
sendString(HMSET, toPayload(key, values), handler);
return this;
}
@Override
public RedisClient hset(String key, String field, String value, Handler<AsyncResult<Long>> handler) {
sendLong(HSET, toPayload(key, field, value), handler);
return this;
}
@Override
public RedisClient hsetnx(String key, String field, String value, Handler<AsyncResult<Long>> handler) {
sendLong(HSETNX, toPayload(key, field, value), handler);
return this;
}
@Override
public RedisClient hvals(String key, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(HVALS, toPayload(key), handler);
return this;
}
@Override
public RedisClient incr(String key, Handler<AsyncResult<Long>> handler) {
sendLong(INCR, toPayload(key), handler);
return this;
}
@Override
public RedisClient incrby(String key, long increment, Handler<AsyncResult<Long>> handler) {
sendLong(INCRBY, toPayload(key, increment), handler);
return this;
}
@Override
public RedisClient incrbyfloat(String key, double increment, Handler<AsyncResult<String>> handler) {
sendString(INCRBYFLOAT, toPayload(key, increment), handler);
return this;
}
@Override
public RedisClient info(Handler<AsyncResult<JsonObject>> handler) {
sendString(INFO, Collections.emptyList(), info -> {
if (info.failed()) {
handler.handle(Future.failedFuture(info.cause()));
} else {
JsonObject result = new JsonObject();
JsonObject section = result;
for (String line : info.result().split("\r?\n")) {
if (line.length() > 0) {
if (line.charAt(0) == '#') {
section = new JsonObject();
result.put(line.substring(2).toLowerCase(), section);
} else {
int sep = line.indexOf(':');
section.put(line.substring(0, sep), line.substring(sep + 1));
}
}
}
handler.handle(Future.succeededFuture(result));
}
});
return this;
}
@Override
public RedisClient infoSection(String section, Handler<AsyncResult<JsonObject>> handler) {
sendString(INFO, toPayload(section), info -> {
if (info.failed()) {
handler.handle(Future.failedFuture(info.cause()));
} else {
JsonObject result = new JsonObject();
JsonObject sectionJson = result;
for (String line : info.result().split("\r?\n")) {
if (line.length() > 0) {
if (line.charAt(0) == '#') {
sectionJson = new JsonObject();
result.put(line.substring(2).toLowerCase(), sectionJson);
} else {
int sep = line.indexOf(':');
sectionJson.put(line.substring(0, sep), line.substring(sep + 1));
}
}
}
handler.handle(Future.succeededFuture(result));
}
});
return this;
}
@Override
public RedisClient keys(String pattern, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(KEYS, toPayload(pattern), handler);
return this;
}
@Override
public RedisClient lastsave(Handler<AsyncResult<Long>> handler) {
sendLong(LASTSAVE, null, handler);
return this;
}
@Override
public RedisClient lindex(String key, int index, Handler<AsyncResult<String>> handler) {
sendString(LINDEX, toPayload(key, index), handler);
return this;
}
@Override
public RedisClient linsert(String key, InsertOptions option, String pivot, String value, Handler<AsyncResult<Long>> handler) {
sendLong(LINSERT, toPayload(key, option.name(), pivot, value), handler);
return this;
}
@Override
public RedisClient llen(String key, Handler<AsyncResult<Long>> handler) {
sendLong(LLEN, toPayload(key), handler);
return this;
}
@Override
public RedisClient lpop(String key, Handler<AsyncResult<String>> handler) {
sendString(LPOP, toPayload(key), handler);
return this;
}
@Override
public RedisClient lpushMany(String key, List<String> values, Handler<AsyncResult<Long>> handler) {
sendLong(LPUSH, toPayload(key, values), handler);
return this;
}
@Override
public RedisClient lpush(String key, String value, Handler<AsyncResult<Long>> handler) {
sendLong(LPUSH, toPayload(key, value), handler);
return this;
}
@Override
public RedisClient lpushx(String key, String value, Handler<AsyncResult<Long>> handler) {
sendLong(LPUSHX, toPayload(key, value), handler);
return this;
}
@Override
public RedisClient lrange(String key, long from, long to, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(LRANGE, toPayload(key, from, to), handler);
return this;
}
@Override
public RedisClient lrem(String key, long count, String value, Handler<AsyncResult<Long>> handler) {
sendLong(LREM, toPayload(key, count, value), handler);
return this;
}
@Override
public RedisClient lset(String key, long index, String value, Handler<AsyncResult<String>> handler) {
sendString(LSET, toPayload(key, index, value), handler);
return this;
}
@Override
public RedisClient ltrim(String key, long from, long to, Handler<AsyncResult<String>> handler) {
sendString(LTRIM, toPayload(key, from, to), handler);
return this;
}
@Override
public RedisClient mget(String key, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(MGET, toPayload(key), handler);
return this;
}
@Override
public RedisClient mgetMany(List<String> keys, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(MGET, toPayload(keys), handler);
return this;
}
@Override
public RedisClient migrate(String host, int port, String key, int destdb, long timeout, MigrateOptions options, Handler<AsyncResult<String>> handler) {
sendString(MIGRATE, toPayload(host, port, key, destdb, timeout, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient monitor(Handler<AsyncResult<Void>> handler) {
sendVoid(MONITOR, null, handler);
return this;
}
@Override
public RedisClient move(String key, int destdb, Handler<AsyncResult<Long>> handler) {
sendLong(MOVE, toPayload(key, destdb), handler);
return this;
}
@Override
public RedisClient mset(JsonObject keyvals, Handler<AsyncResult<String>> handler) {
sendString(MSET, toPayload(keyvals), handler);
return this;
}
@Override
public RedisClient msetnx(JsonObject keyvals, Handler<AsyncResult<Long>> handler) {
sendLong(MSETNX, toPayload(keyvals), handler);
return this;
}
@Override
public RedisClient object(String key, ObjectCmd cmd, Handler<AsyncResult<Void>> handler) {
sendVoid(OBJECT, toPayload(cmd.name(), key), handler);
return this;
}
@Override
public RedisClient persist(String key, Handler<AsyncResult<Long>> handler) {
sendLong(PERSIST, toPayload(key), handler);
return this;
}
@Override
public RedisClient pexpire(String key, long millis, Handler<AsyncResult<Long>> handler) {
sendLong(PEXPIRE, toPayload(key, millis), handler);
return this;
}
@Override
public RedisClient pexpireat(String key, long millis, Handler<AsyncResult<Long>> handler) {
sendLong(PEXPIREAT, toPayload(key, millis), handler);
return this;
}
@Override
public RedisClient pfadd(String key, String element, Handler<AsyncResult<Long>> handler) {
sendLong(PFADD, toPayload(key, element), handler);
return this;
}
@Override
public RedisClient pfaddMany(String key, List<String> elements, Handler<AsyncResult<Long>> handler) {
sendLong(PFADD, toPayload(key, elements), handler);
return this;
}
@Override
public RedisClient pfcount(String key, Handler<AsyncResult<Long>> handler) {
sendLong(PFCOUNT, toPayload(key), handler);
return this;
}
@Override
public RedisClient pfcountMany(List<String> key, Handler<AsyncResult<Long>> handler) {
sendLong(PFCOUNT, toPayload(key), handler);
return this;
}
@Override
public RedisClient pfmerge(String destkey, List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(PFMERGE, toPayload(destkey, keys), handler);
return this;
}
@Override
public RedisClient ping(Handler<AsyncResult<String>> handler) {
sendString(PING, null, handler);
return this;
}
@Override
public RedisClient psetex(String key, long millis, String value, Handler<AsyncResult<Void>> handler) {
sendVoid(PSETEX, toPayload(key, millis, value), handler);
return this;
}
@Override
public RedisClient psubscribe(String pattern, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(PSUBSCRIBE, toPayload(pattern), handler);
return this;
}
@Override
public RedisClient psubscribeMany(List<String> patterns, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(PSUBSCRIBE, toPayload(patterns), handler);
return this;
}
@Override
public RedisClient pubsubChannels(String pattern, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(PUBSUB, toPayload("CHANNELS", pattern == null || "".equals(pattern) ? null : pattern), handler);
return this;
}
public RedisClient pubsubNumsub(List<String> channels, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(PUBSUB, toPayload("NUMSUB", channels), handler);
return this;
}
public RedisClient pubsubNumpat(Handler<AsyncResult<Long>> handler) {
sendLong(PUBSUB, toPayload("NUMPAT"), handler);
return this;
}
@Override
public RedisClient pttl(String key, Handler<AsyncResult<Long>> handler) {
sendLong(PTTL, toPayload(key), handler);
return this;
}
@Override
public RedisClient publish(String channel, String message, Handler<AsyncResult<Long>> handler) {
sendLong(PUBLISH, toPayload(channel, message), handler);
return this;
}
@Override
public RedisClient punsubscribe(List<String> patterns, Handler<AsyncResult<Void>> handler) {
sendVoid(PUNSUBSCRIBE, toPayload(patterns), handler);
return this;
}
@Override
public RedisClient randomkey(Handler<AsyncResult<String>> handler) {
sendString(RANDOMKEY, null, handler);
return this;
}
@Override
public RedisClient rename(String key, String newkey, Handler<AsyncResult<String>> handler) {
sendString(RENAME, toPayload(key, newkey), handler);
return this;
}
@Override
public RedisClient renamenx(String key, String newkey, Handler<AsyncResult<Long>> handler) {
sendLong(RENAMENX, toPayload(key, newkey), handler);
return this;
}
@Override
public RedisClient restore(String key, long millis, String serialized, Handler<AsyncResult<String>> handler) {
sendString(RESTORE, toPayload(key, millis, RedisEncoding.decode(serialized)), handler);
return this;
}
@Override
public RedisClient role(Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(ROLE, null, handler);
return this;
}
@Override
public RedisClient rpop(String key, Handler<AsyncResult<String>> handler) {
sendString(RPOP, toPayload(key), handler);
return this;
}
@Override
public RedisClient rpoplpush(String key, String destkey, Handler<AsyncResult<String>> handler) {
sendString(RPOPLPUSH, toPayload(key, destkey), handler);
return this;
}
@Override
public RedisClient rpushMany(String key, List<String> values, Handler<AsyncResult<Long>> handler) {
sendLong(RPUSH, toPayload(key, values), handler);
return this;
}
@Override
public RedisClient rpush(String key, String value, Handler<AsyncResult<Long>> handler) {
sendLong(RPUSH, toPayload(key, value), handler);
return this;
}
@Override
public RedisClient rpushx(String key, String value, Handler<AsyncResult<Long>> handler) {
sendLong(RPUSHX, toPayload(key, value), handler);
return this;
}
@Override
public RedisClient sadd(String key, String member, Handler<AsyncResult<Long>> handler) {
sendLong(SADD, toPayload(key, member), handler);
return this;
}
@Override
public RedisClient saddMany(String key, List<String> members, Handler<AsyncResult<Long>> handler) {
sendLong(SADD, toPayload(key, members), handler);
return this;
}
@Override
public RedisClient save(Handler<AsyncResult<String>> handler) {
sendString(SAVE, null, handler);
return this;
}
@Override
public RedisClient scard(String key, Handler<AsyncResult<Long>> handler) {
sendLong(SCARD, toPayload(key), handler);
return this;
}
@Override
public RedisClient scriptExists(String script, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SCRIPT, toPayload("EXISTS", script), handler);
return this;
}
@Override
public RedisClient scriptExistsMany(List<String> scripts, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SCRIPT, toPayload("EXISTS", scripts), handler);
return this;
}
@Override
public RedisClient scriptFlush(Handler<AsyncResult<String>> handler) {
sendString(SCRIPT, toPayload("FLUSH"), handler);
return this;
}
@Override
public RedisClient scriptKill(Handler<AsyncResult<String>> handler) {
sendString(SCRIPT, toPayload("KILL"), handler);
return this;
}
@Override
public RedisClient scriptLoad(String script, Handler<AsyncResult<String>> handler) {
sendString(SCRIPT, toPayload("LOAD", script), handler);
return this;
}
@Override
public RedisClient sdiff(String key, List<String> cmpkeys, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SDIFF, toPayload(key, cmpkeys), handler);
return this;
}
@Override
public RedisClient sdiffstore(String destkey, String key, List<String> cmpkeys, Handler<AsyncResult<Long>> handler) {
sendLong(SDIFFSTORE, toPayload(destkey, key, cmpkeys), handler);
return this;
}
@Override
public RedisClient select(int dbindex, Handler<AsyncResult<String>> handler) {
sendString(SELECT, toPayload(dbindex), handler);
return this;
}
@Override
public RedisClient set(String key, String value, Handler<AsyncResult<Void>> handler) {
sendVoid(SET, toPayload(key, value), handler);
return this;
}
@Override
public RedisClient setWithOptions(String key, String value, SetOptions options, Handler<AsyncResult<String>> handler) {
sendString(SET, toPayload(key, value, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient setBinary(String key, Buffer value, Handler<AsyncResult<Void>> handler) {
sendVoid(SET, toPayload(key, value), handler);
return this;
}
@Override
public RedisClient setBinaryWithOptions(String key, Buffer value, SetOptions options, Handler<AsyncResult<Void>> handler) {
sendVoid(SET, toPayload(key, value, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient setbit(String key, long offset, int bit, Handler<AsyncResult<Long>> handler) {
sendLong(SETBIT, toPayload(key, offset, bit), handler);
return this;
}
@Override
public RedisClient setex(String key, long seconds, String value, Handler<AsyncResult<String>> handler) {
sendString(SETEX, toPayload(key, seconds, value), handler);
return this;
}
@Override
public RedisClient setnx(String key, String value, Handler<AsyncResult<Long>> handler) {
sendLong(SETNX, toPayload(key, value), handler);
return this;
}
@Override
public RedisClient setrange(String key, int offset, String value, Handler<AsyncResult<Long>> handler) {
sendLong(SETRANGE, toPayload(key, offset, value), handler);
return this;
}
@Override
public RedisClient sinter(List<String> keys, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SINTER, toPayload(keys), handler);
return this;
}
@Override
public RedisClient sinterstore(String destkey, List<String> keys, Handler<AsyncResult<Long>> handler) {
sendLong(SINTERSTORE, toPayload(destkey, keys), handler);
return this;
}
@Override
public RedisClient sismember(String key, String member, Handler<AsyncResult<Long>> handler) {
sendLong(SISMEMBER, toPayload(key, member), handler);
return this;
}
@Override
public RedisClient slaveof(String host, int port, Handler<AsyncResult<String>> handler) {
sendString(SLAVEOF, toPayload(host, port), handler);
return this;
}
@Override
public RedisClient slaveofNoone(Handler<AsyncResult<String>> handler) {
sendString(SLAVEOF, toPayload("NO", "ONE"), handler);
return this;
}
@Override
public RedisClient slowlogGet(int limit, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SLOWLOG, toPayload("GET", limit < 0 ? null : limit), handler);
return this;
}
@Override
public RedisClient slowlogLen(Handler<AsyncResult<Long>> handler) {
sendLong(SLOWLOG, toPayload("LEN"), handler);
return this;
}
@Override
public RedisClient slowlogReset(Handler<AsyncResult<Void>> handler) {
sendVoid(SLOWLOG, toPayload("RESET"), handler);
return this;
}
@Override
public RedisClient smembers(String key, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SMEMBERS, toPayload(key), handler);
return this;
}
@Override
public RedisClient smove(String key, String destkey, String member, Handler<AsyncResult<Long>> handler) {
sendLong(SMOVE, toPayload(key, destkey, member), handler);
return this;
}
@Override
public RedisClient sort(String key, SortOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SORT, toPayload(key, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient spop(String key, Handler<AsyncResult<String>> handler) {
sendString(SPOP, toPayload(key), handler);
return this;
}
@Override
public RedisClient spopMany(String key, int count, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SPOP, toPayload(key, count), handler);
return this;
}
@Override
public RedisClient srandmember(String key, Handler<AsyncResult<String>> handler) {
sendString(SRANDMEMBER, toPayload(key), handler);
return this;
}
@Override
public RedisClient srandmemberCount(String key, int count, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SRANDMEMBER, toPayload(key, count), handler);
return this;
}
@Override
public RedisClient srem(String key, String member, Handler<AsyncResult<Long>> handler) {
sendLong(SREM, toPayload(key, member), handler);
return this;
}
@Override
public RedisClient sremMany(String key, List<String> members, Handler<AsyncResult<Long>> handler) {
sendLong(SREM, toPayload(key, members), handler);
return this;
}
@Override
public RedisClient strlen(String key, Handler<AsyncResult<Long>> handler) {
sendLong(STRLEN, toPayload(key), handler);
return this;
}
@Override
public RedisClient subscribe(String channel, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SUBSCRIBE, toPayload(channel), handler);
return this;
}
@Override
public RedisClient subscribeMany(List<String> channels, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SUBSCRIBE, toPayload(channels), handler);
return this;
}
@Override
public RedisClient sunion(List<String> keys, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SUNION, toPayload(keys), handler);
return this;
}
@Override
public RedisClient sunionstore(String destkey, List<String> keys, Handler<AsyncResult<Long>> handler) {
sendLong(SUNIONSTORE, toPayload(destkey, keys), handler);
return this;
}
@Override
public RedisClient sync(Handler<AsyncResult<Void>> handler) {
sendVoid(SYNC, null, handler);
return this;
}
@Override
public RedisClient time(Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(TIME, null, handler);
return this;
}
@Override
public RedisTransaction transaction() {
return new RedisTransactionImpl();
}
@Override
public RedisClient ttl(String key, Handler<AsyncResult<Long>> handler) {
sendLong(TTL, toPayload(key), handler);
return this;
}
@Override
public RedisClient type(String key, Handler<AsyncResult<String>> handler) {
sendString(TYPE, toPayload(key), handler);
return this;
}
@Override
public RedisClient unsubscribe(List<String> channels, Handler<AsyncResult<Void>> handler) {
sendVoid(UNSUBSCRIBE, toPayload(channels), handler);
return this;
}
@Override
public RedisClient wait(long numSlaves, long timeout, Handler<AsyncResult<String>> handler) {
sendString(WAIT, toPayload(numSlaves, timeout), handler);
return this;
}
@Override
public RedisClient zadd(String key, double score, String member, Handler<AsyncResult<Long>> handler) {
sendLong(ZADD, toPayload(key, score, member), handler);
return this;
}
@Override
public RedisClient zaddMany(String key, Map<String, Double> members, Handler<AsyncResult<Long>> handler) {
Stream flipped = members.entrySet().stream().map(e -> new Object[]{e.getValue(), e.getKey()});
sendLong(ZADD, toPayload(key, flipped), handler);
return this;
}
@Override
public RedisClient zcard(String key, Handler<AsyncResult<Long>> handler) {
sendLong(ZCARD, toPayload(key), handler);
return this;
}
@Override
public RedisClient zcount(String key, double min, double max, Handler<AsyncResult<Long>> handler) {
String minVal = (min == Double.NEGATIVE_INFINITY) ? "-inf" : String.valueOf(min);
String maxVal = (max == Double.POSITIVE_INFINITY) ? "+inf" : String.valueOf(max);
sendLong(ZCOUNT, toPayload(key, minVal, maxVal), handler);
return this;
}
@Override
public RedisClient zincrby(String key, double increment, String member, Handler<AsyncResult<String>> handler) {
sendString(ZINCRBY, toPayload(key, increment, member), handler);
return this;
}
@Override
public RedisClient zinterstore(String destkey, List<String> sets, AggregateOptions options, Handler<AsyncResult<Long>> handler) {
sendLong(ZINTERSTORE, toPayload(destkey, sets.size(), sets, options != null ? options.name() : null), handler);
return this;
}
@Override
public RedisClient zinterstoreWeighed(String destkey, Map<String, Double> sets, AggregateOptions options, Handler<AsyncResult<Long>> handler) {
sendLong(ZINTERSTORE, toPayload(destkey, sets.size(), sets.keySet(), "WEIGHTS", sets.values(),
options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient zlexcount(String key, String min, String max, Handler<AsyncResult<Long>> handler) {
sendLong(ZLEXCOUNT, toPayload(key, min, max), handler);
return this;
}
@Override
public RedisClient zrange(String key, long start, long stop, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(ZRANGE, toPayload(key, start, stop), handler);
return this;
}
@Override
public RedisClient zrangeWithOptions(String key, long start, long stop, RangeOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(ZRANGE, toPayload(key, start, stop, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient zrangebylex(String key, String min, String max, LimitOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(ZRANGEBYLEX, toPayload(key, min, max, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient zrangebyscore(String key, String min, String max, RangeLimitOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(ZRANGEBYSCORE, toPayload(key, min, max, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient zrank(String key, String member, Handler<AsyncResult<Long>> handler) {
sendLong(ZRANK, toPayload(key, member), handler);
return this;
}
@Override
public RedisClient zrem(String key, String member, Handler<AsyncResult<Long>> handler) {
sendLong(ZREM, toPayload(key, member), handler);
return this;
}
@Override
public RedisClient zremMany(String key, List<String> members, Handler<AsyncResult<Long>> handler) {
sendLong(ZREM, toPayload(key, members), handler);
return this;
}
@Override
public RedisClient zremrangebylex(String key, String min, String max, Handler<AsyncResult<Long>> handler) {
sendLong(ZREMRANGEBYLEX, toPayload(key, min, max), handler);
return this;
}
@Override
public RedisClient zremrangebyrank(String key, long start, long stop, Handler<AsyncResult<Long>> handler) {
sendLong(ZREMRANGEBYRANK, toPayload(key, start, stop), handler);
return this;
}
@Override
public RedisClient zremrangebyscore(String key, String min, String max, Handler<AsyncResult<Long>> handler) {
sendLong(ZREMRANGEBYSCORE, toPayload(key, min, max), handler);
return this;
}
@Override
public RedisClient zrevrange(String key, long start, long stop, RangeOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(ZREVRANGE, toPayload(key, start, stop, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient zrevrangebylex(String key, String max, String min, LimitOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(ZREVRANGEBYLEX, toPayload(key, max, min, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient zrevrangebyscore(String key, String max, String min, RangeLimitOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(ZREVRANGEBYSCORE, toPayload(key, max, min, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient zrevrank(String key, String member, Handler<AsyncResult<Long>> handler) {
sendLong(ZREVRANK, toPayload(key, member), handler);
return this;
}
@Override
public RedisClient zscore(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(ZSCORE, toPayload(key, member), handler);
return this;
}
@Override
public RedisClient zunionstore(String destkey, List<String> sets, AggregateOptions options, Handler<AsyncResult<Long>> handler) {
sendLong(ZUNIONSTORE, toPayload(destkey, sets.size(), sets, options != null ? options.name() : null), handler);
return this;
}
@Override
public RedisClient zunionstoreWeighed(String destkey, Map<String, Double> sets, AggregateOptions options, Handler<AsyncResult<Long>> handler) {
sendLong(ZUNIONSTORE, toPayload(destkey, sets.size(), sets.keySet(), "WEIGHTS", sets.values(),
options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient scan(String cursor, ScanOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SCAN, toPayload(cursor, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient sscan(String key, String cursor, ScanOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SSCAN, toPayload(key, cursor, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient hscan(String key, String cursor, ScanOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(HSCAN, toPayload(key, cursor, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient zscan(String key, String cursor, ScanOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(ZSCAN, toPayload(key, cursor, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient geoadd(String key, double longitude, double latitude, String member, Handler<AsyncResult<Long>> handler) {
sendLong(GEOADD, toPayload(key, longitude, latitude, member), handler);
return this;
}
@Override
public RedisClient geoaddMany(String key, List<GeoMember> members, Handler<AsyncResult<Long>> handler) {
sendLong(GEOADD, toPayload(key, members), handler);
return this;
}
@Override
public RedisClient geohash(String key, String member, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(GEOHASH, toPayload(key, member), handler);
return this;
}
@Override
public RedisClient geohashMany(String key, List<String> members, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(GEOHASH, toPayload(key, members), handler);
return this;
}
@Override
public RedisClient geopos(String key, String member, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(GEOPOS, toPayload(key, member), handler);
return this;
}
@Override
public RedisClient geoposMany(String key, List<String> members, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(GEOPOS, toPayload(key, members), handler);
return this;
}
@Override
public RedisClient geodist(String key, String member1, String member2, Handler<AsyncResult<String>> handler) {
sendString(GEODIST, toPayload(key, member1, member2), handler);
return this;
}
@Override
public RedisClient geodistWithUnit(String key, String member1, String member2, GeoUnit unit, Handler<AsyncResult<String>> handler) {
sendString(GEODIST, toPayload(key, member1, member2, unit), handler);
return this;
}
@Override
public RedisClient georadius(String key, double longitude, double latitude, double radius, GeoUnit unit, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(GEORADIUS, toPayload(key, longitude, latitude, radius, unit), handler);
return this;
}
@Override
public RedisClient georadiusWithOptions(String key, double longitude, double latitude, double radius, GeoUnit unit, GeoRadiusOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(GEORADIUS, toPayload(key, longitude, latitude, radius, unit, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient georadiusbymember(String key, String member, double radius, GeoUnit unit, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(GEORADIUSBYMEMBER, toPayload(key, member, radius, unit), handler);
return this;
}
@Override
public RedisClient georadiusbymemberWithOptions(String key, String member, double radius, GeoUnit unit, GeoRadiusOptions options, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(GEORADIUSBYMEMBER, toPayload(key, member, radius, unit, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient clientReply(ClientReplyOptions options, Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("REPLY", options), handler);
return this;
}
@Override
public RedisClient hstrlen(String key, String field, Handler<AsyncResult<Long>> handler) {
sendLong(HSTRLEN, toPayload(key, field), handler);
return this;
}
@Override
public RedisClient touch(String key, Handler<AsyncResult<Long>> handler) {
sendLong(TOUCH, toPayload(key), handler);
return this;
}
@Override
public RedisClient touchMany(List<String> keys, Handler<AsyncResult<Long>> handler) {
sendLong(TOUCH, keys, handler);
return this;
}
@Override
public RedisClient scriptDebug(ScriptDebugOptions scriptDebugOptions, Handler<AsyncResult<String>> handler) {
sendString(SCRIPT, toPayload("DEBUG", scriptDebugOptions), handler);
return this;
}
@Override
public RedisClient bitfield(String key, BitFieldOptions bitFieldOptions, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(BITFIELD, toPayload(key, bitFieldOptions != null ? bitFieldOptions.toJsonArray() : null), handler);
return this;
}
@Override
public RedisClient bitfieldWithOverflow(String key, BitFieldOptions bitFieldOptions, BitFieldOverflowOptions overflow, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(BITFIELD, toPayload(key, bitFieldOptions != null ? bitFieldOptions.toJsonArray() : null, overflow), handler);
return this;
}
@Override
public RedisClient unlink(String key, Handler<AsyncResult<Long>> handler) {
sendLong(UNLINK, toPayload(key), handler);
return this;
}
@Override
public RedisClient unlinkMany(List<String> keys, Handler<AsyncResult<Long>> handler) {
sendLong(UNLINK, toPayload(keys), handler);
return this;
}
@Override
public RedisClient swapdb(int index1, int index2, Handler<AsyncResult<String>> handler) {
sendString(SWAPDB, toPayload(index1, index2), handler);
return this;
}
public class RedisTransactionImpl implements RedisTransaction {
@Override
public void close(Handler<AsyncResult<Void>> handler) {
RedisClientImpl.this.close(handler);
}
@Override
public RedisTransaction append(String key, String value, Handler<AsyncResult<String>> handler) {
sendString(APPEND, toPayload(key, value), handler);
return this;
}
@Override
public RedisTransaction auth(String password, Handler<AsyncResult<String>> handler) {
sendString(AUTH, toPayload(password), handler);
return this;
}
@Override
public RedisTransaction bgrewriteaof(Handler<AsyncResult<String>> handler) {
sendString(BGREWRITEAOF, null, handler);
return this;
}
@Override
public RedisTransaction bgsave(Handler<AsyncResult<String>> handler) {
sendString(BGSAVE, null, handler);
return this;
}
@Override
public RedisTransaction bitcount(String key, Handler<AsyncResult<String>> handler) {
sendString(BITCOUNT, toPayload(key), handler);
return this;
}
public RedisTransaction bitcountRange(String key, long start, long end, Handler<AsyncResult<String>> handler) {
sendString(BITCOUNT, toPayload(key, start, end), handler);
return this;
}
@Override
public RedisTransaction bitop(BitOperation operation, String destkey, List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(BITOP, toPayload(operation.name(), destkey, keys), handler);
return this;
}
@Override
public RedisTransaction bitpos(String key, int bit, Handler<AsyncResult<String>> handler) {
sendString(BITPOS, toPayload(key, bit), handler);
return this;
}
@Override
public RedisTransaction bitposFrom(String key, int bit, int start, Handler<AsyncResult<String>> handler) {
sendString(BITPOS, toPayload(key, bit, start), handler);
return this;
}
@Override
public RedisTransaction bitposRange(String key, int bit, int start, int stop, Handler<AsyncResult<String>> handler) {
sendString(BITPOS, toPayload(key, bit, start, stop), handler);
return this;
}
@Override
public RedisTransaction blpop(String key, int seconds, Handler<AsyncResult<String>> handler) {
sendString(BLPOP, toPayload(key, seconds), handler);
return this;
}
@Override
public RedisTransaction blpopMany(List<String> keys, int seconds, Handler<AsyncResult<String>> handler) {
sendString(BLPOP, toPayload(keys, seconds), handler);
return this;
}
@Override
public RedisTransaction brpop(String key, int seconds, Handler<AsyncResult<String>> handler) {
sendString(BRPOP, toPayload(key, seconds), handler);
return this;
}
@Override
public RedisTransaction brpopMany(List<String> keys, int seconds, Handler<AsyncResult<String>> handler) {
sendString(BRPOP, toPayload(keys, seconds), handler);
return this;
}
@Override
public RedisTransaction brpoplpush(String key, String destkey, int seconds, Handler<AsyncResult<String>> handler) {
sendString(BRPOPLPUSH, toPayload(key, destkey, seconds), handler);
return this;
}
@Override
public RedisTransaction clientKill(KillFilter filter, Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("KILL", filter.toJsonArray().getList()), handler);
return this;
}
@Override
public RedisTransaction clientList(Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("LIST"), handler);
return this;
}
@Override
public RedisTransaction clientGetname(Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("GETNAME"), handler);
return this;
}
@Override
public RedisTransaction clientPause(long millis, Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("PAUSE", millis), handler);
return this;
}
@Override
public RedisTransaction clientSetname(String name, Handler<AsyncResult<String>> handler) {
sendString(CLIENT, toPayload("SETNAME", name), handler);
return this;
}
@Override
public RedisTransaction clusterAddslots(List<String> slots, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("ADDSLOTS"), handler);
return this;
}
@Override
public RedisTransaction clusterCountFailureReports(String nodeId, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("COUNT-FAILURE-REPORTS", nodeId), handler);
return this;
}
@Override
public RedisTransaction clusterCountkeysinslot(long slot, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("COUNTKEYSINSLOT", slot), handler);
return this;
}
@Override
public RedisTransaction clusterDelslots(long slot, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("DELSLOTS", slot), handler);
return this;
}
@Override
public RedisTransaction clusterDelslotsMany(List<String> slots, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("DELSLOTS", slots), handler);
return this;
}
@Override
public RedisTransaction clusterFailover(Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("FAILOVER"), handler);
return this;
}
@Override
public RedisTransaction clusterFailOverWithOptions(FailoverOptions options, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("FAILOVER", options), handler);
return this;
}
@Override
public RedisTransaction clusterForget(String nodeId, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("FORGET", nodeId), handler);
return this;
}
@Override
public RedisTransaction clusterGetkeysinslot(long slot, long count, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("GETKEYSINSLOT", slot, count), handler);
return this;
}
@Override
public RedisTransaction clusterInfo(Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("INFO"), handler);
return this;
}
@Override
public RedisTransaction clusterKeyslot(String key, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("KEYSLOT", key), handler);
return this;
}
@Override
public RedisTransaction clusterMeet(String ip, long port, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("MEET", ip, port), handler);
return this;
}
@Override
public RedisTransaction clusterNodes(Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("NODES"), handler);
return this;
}
@Override
public RedisTransaction clusterReplicate(String nodeId, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("REPLICATE", nodeId), handler);
return this;
}
@Override
public RedisTransaction clusterReset(Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("RESET"), handler);
return this;
}
@Override
public RedisTransaction clusterResetWithOptions(ResetOptions options, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("RESET", options), handler);
return this;
}
@Override
public RedisTransaction clusterSaveconfig(Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("SAVECONFIG"), handler);
return this;
}
@Override
public RedisTransaction clusterSetConfigEpoch(long epoch, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("SET-CONFIG-EPOCH", epoch), handler);
return this;
}
@Override
public RedisTransaction clusterSetslot(long slot, SlotCmd subcommand, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("SETSLOT", slot, subcommand), handler);
return this;
}
@Override
public RedisTransaction clusterSetslotWithNode(long slot, SlotCmd subcommand, String nodeId, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("SETSLOT", slot, subcommand, nodeId), handler);
return this;
}
@Override
public RedisTransaction clusterSlaves(String nodeId, Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("SLAVES", nodeId), handler);
return this;
}
@Override
public RedisTransaction clusterSlots(Handler<AsyncResult<String>> handler) {
sendString(CLUSTER, toPayload("SLOTS"), handler);
return this;
}
@Override
public RedisTransaction command(Handler<AsyncResult<String>> handler) {
sendString(COMMAND, null, handler);
return this;
}
@Override
public RedisTransaction commandCount(Handler<AsyncResult<String>> handler) {
sendString(COMMAND, toPayload("COUNT"), handler);
return this;
}
@Override
public RedisTransaction commandGetkeys(Handler<AsyncResult<String>> handler) {
sendString(COMMAND, toPayload("GETKEYS"), handler);
return this;
}
@Override
public RedisTransaction commandInfo(List<String> commands, Handler<AsyncResult<String>> handler) {
sendString(COMMAND, toPayload("INFO", commands), handler);
return this;
}
@Override
public RedisTransaction configGet(String parameter, Handler<AsyncResult<String>> handler) {
sendString(CONFIG, toPayload("GET", parameter), handler);
return this;
}
@Override
public RedisTransaction configRewrite(Handler<AsyncResult<String>> handler) {
sendString(CONFIG, toPayload("REWRITE"), handler);
return this;
}
@Override
public RedisTransaction configSet(String parameter, String value, Handler<AsyncResult<String>> handler) {
sendString(CONFIG, toPayload("SET", parameter, value), handler);
return this;
}
@Override
public RedisTransaction configResetstat(Handler<AsyncResult<String>> handler) {
sendString(CONFIG, toPayload("RESETSTAT"), handler);
return this;
}
@Override
public RedisTransaction dbsize(Handler<AsyncResult<String>> handler) {
sendString(DBSIZE, null, handler);
return this;
}
@Override
public RedisTransaction debugObject(String key, Handler<AsyncResult<String>> handler) {
sendString(DEBUG, toPayload("OBJECT", key), handler);
return this;
}
@Override
public RedisTransaction debugSegfault(Handler<AsyncResult<String>> handler) {
sendString(DEBUG, toPayload("SEGFAULT"), handler);
return this;
}
@Override
public RedisTransaction decr(String key, Handler<AsyncResult<String>> handler) {
sendString(DECR, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction decrby(String key, long decrement, Handler<AsyncResult<String>> handler) {
sendString(DECRBY, toPayload(key, decrement), handler);
return this;
}
@Override
public RedisTransaction del(String key, Handler<AsyncResult<String>> handler) {
sendString(DEL, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction delMany(List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(DEL, toPayload(keys), handler);
return this;
}
@Override
public RedisTransaction discard(Handler<AsyncResult<String>> handler) {
sendString(DISCARD, null, handler);
return this;
}
@Override
public RedisTransaction dump(String key, Handler<AsyncResult<String>> handler) {
sendString(DUMP, toPayload(key), dump -> {
if (dump.failed()) {
handler.handle(dump);
} else {
handler.handle(Future.succeededFuture(RedisEncoding.encode(dump.result())));
}
});
return this;
}
@Override
public RedisTransaction echo(String message, Handler<AsyncResult<String>> handler) {
sendString(ECHO, toPayload(message), handler);
return this;
}
@Override
public RedisTransaction eval(String script, List<String> keys, List<String> args, Handler<AsyncResult<String>> handler) {
keys = (keys != null) ? keys : Collections.emptyList();
args = (args != null) ? args : Collections.emptyList();
sendString(EVAL, toPayload(script, keys.size(), keys, args), handler);
return this;
}
@Override
public RedisTransaction evalsha(String sha1, List<String> keys, List<String> args, Handler<AsyncResult<String>> handler) {
keys = (keys != null) ? keys : Collections.emptyList();
args = (args != null) ? args : Collections.emptyList();
sendString(EVALSHA, toPayload(sha1, keys.size(), keys, args), handler);
return this;
}
@Override
public RedisTransaction exec(Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(EXEC, null, handler);
return this;
}
@Override
public RedisTransaction exists(String key, Handler<AsyncResult<String>> handler) {
sendString(EXISTS, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction existsMany(List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(EXISTS, toPayload(keys), handler);
return this;
}
@Override
public RedisTransaction expire(String key, int seconds, Handler<AsyncResult<String>> handler) {
sendString(EXPIRE, toPayload(key, seconds), handler);
return this;
}
@Override
public RedisTransaction expireat(String key, long seconds, Handler<AsyncResult<String>> handler) {
sendString(EXPIREAT, toPayload(key, seconds), handler);
return this;
}
@Override
public RedisTransaction flushall(Handler<AsyncResult<String>> handler) {
sendString(FLUSHALL, null, handler);
return this;
}
@Override
public RedisTransaction flushdb(Handler<AsyncResult<String>> handler) {
sendString(FLUSHDB, null, handler);
return this;
}
@Override
public RedisTransaction get(String key, Handler<AsyncResult<String>> handler) {
sendString(GET, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction getBinary(String key, Handler<AsyncResult<Buffer>> handler) {
sendBuffer(GET, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction getbit(String key, long offset, Handler<AsyncResult<String>> handler) {
sendString(GETBIT, toPayload(key, offset), handler);
return this;
}
@Override
public RedisTransaction getrange(String key, long start, long end, Handler<AsyncResult<String>> handler) {
sendString(GETRANGE, toPayload(key, start, end), handler);
return this;
}
@Override
public RedisTransaction getset(String key, String value, Handler<AsyncResult<String>> handler) {
sendString(GETSET, toPayload(key, value), handler);
return this;
}
@Override
public RedisTransaction hdel(String key, String field, Handler<AsyncResult<String>> handler) {
sendString(HDEL, toPayload(key, field), handler);
return this;
}
@Override
public RedisTransaction hdelMany(String key, List<String> fields, Handler<AsyncResult<String>> handler) {
sendString(HDEL, toPayload(key, fields), handler);
return this;
}
@Override
public RedisTransaction hexists(String key, String field, Handler<AsyncResult<String>> handler) {
sendString(HEXISTS, toPayload(key, field), handler);
return this;
}
@Override
public RedisTransaction hget(String key, String field, Handler<AsyncResult<String>> handler) {
sendString(HGET, toPayload(key, field), handler);
return this;
}
@Override
public RedisTransaction hgetall(String key, Handler<AsyncResult<String>> handler) {
sendString(HGETALL, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction hincrby(String key, String field, long increment, Handler<AsyncResult<String>> handler) {
sendString(HINCRBY, toPayload(key, field, increment), handler);
return this;
}
@Override
public RedisTransaction hincrbyfloat(String key, String field, double increment, Handler<AsyncResult<String>> handler) {
sendString(HINCRBYFLOAT, toPayload(key, field, increment), handler);
return this;
}
@Override
public RedisTransaction hkeys(String key, Handler<AsyncResult<String>> handler) {
sendString(HKEYS, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction hlen(String key, Handler<AsyncResult<String>> handler) {
sendString(HLEN, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction hmget(String key, List<String> fields, Handler<AsyncResult<String>> handler) {
sendString(HMGET, toPayload(key, fields), handler);
return this;
}
@Override
public RedisTransaction hmset(String key, JsonObject values, Handler<AsyncResult<String>> handler) {
sendString(HMSET, toPayload(key, values), handler);
return this;
}
@Override
public RedisTransaction hset(String key, String field, String value, Handler<AsyncResult<String>> handler) {
sendString(HSET, toPayload(key, field, value), handler);
return this;
}
@Override
public RedisTransaction hsetnx(String key, String field, String value, Handler<AsyncResult<String>> handler) {
sendString(HSETNX, toPayload(key, field, value), handler);
return this;
}
@Override
public RedisTransaction hvals(String key, Handler<AsyncResult<String>> handler) {
sendString(HVALS, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction incr(String key, Handler<AsyncResult<String>> handler) {
sendString(INCR, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction incrby(String key, long increment, Handler<AsyncResult<String>> handler) {
sendString(INCRBY, toPayload(key, increment), handler);
return this;
}
@Override
public RedisTransaction incrbyfloat(String key, double increment, Handler<AsyncResult<String>> handler) {
sendString(INCRBYFLOAT, toPayload(key, increment), handler);
return this;
}
@Override
public RedisTransaction info(Handler<AsyncResult<String>> handler) {
sendString(INFO, Collections.emptyList(), handler);
return this;
}
@Override
public RedisTransaction infoSection(String section, Handler<AsyncResult<String>> handler) {
sendString(INFO, toPayload(section), handler);
return this;
}
@Override
public RedisTransaction keys(String pattern, Handler<AsyncResult<String>> handler) {
sendString(KEYS, toPayload(pattern), handler);
return this;
}
@Override
public RedisTransaction lastsave(Handler<AsyncResult<String>> handler) {
sendString(LASTSAVE, null, handler);
return this;
}
@Override
public RedisTransaction lindex(String key, int index, Handler<AsyncResult<String>> handler) {
sendString(LINDEX, toPayload(key, index), handler);
return this;
}
@Override
public RedisTransaction linsert(String key, InsertOptions option, String pivot, String value, Handler<AsyncResult<String>> handler) {
sendString(LINSERT, toPayload(key, option.name(), pivot, value), handler);
return this;
}
@Override
public RedisTransaction llen(String key, Handler<AsyncResult<String>> handler) {
sendString(LLEN, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction lpop(String key, Handler<AsyncResult<String>> handler) {
sendString(LPOP, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction lpushMany(String key, List<String> values, Handler<AsyncResult<String>> handler) {
sendString(LPUSH, toPayload(key, values), handler);
return this;
}
@Override
public RedisTransaction lpush(String key, String value, Handler<AsyncResult<String>> handler) {
sendString(LPUSH, toPayload(key, value), handler);
return this;
}
@Override
public RedisTransaction lpushx(String key, String value, Handler<AsyncResult<String>> handler) {
sendString(LPUSHX, toPayload(key, value), handler);
return this;
}
@Override
public RedisTransaction lrange(String key, long from, long to, Handler<AsyncResult<String>> handler) {
sendString(LRANGE, toPayload(key, from, to), handler);
return this;
}
@Override
public RedisTransaction lrem(String key, long count, String value, Handler<AsyncResult<String>> handler) {
sendString(LREM, toPayload(key, count, value), handler);
return this;
}
@Override
public RedisTransaction lset(String key, long index, String value, Handler<AsyncResult<String>> handler) {
sendString(LSET, toPayload(key, index, value), handler);
return this;
}
@Override
public RedisTransaction ltrim(String key, long from, long to, Handler<AsyncResult<String>> handler) {
sendString(LTRIM, toPayload(key, from, to), handler);
return this;
}
@Override
public RedisTransaction mget(String key, Handler<AsyncResult<String>> handler) {
sendString(MGET, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction mgetMany(List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(MGET, toPayload(keys), handler);
return this;
}
@Override
public RedisTransaction migrate(String host, int port, String key, int destdb, long timeout, MigrateOptions options, Handler<AsyncResult<String>> handler) {
sendString(MIGRATE, toPayload(host, port, key, destdb, timeout, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction monitor(Handler<AsyncResult<String>> handler) {
sendString(MONITOR, null, handler);
return this;
}
@Override
public RedisTransaction move(String key, int destdb, Handler<AsyncResult<String>> handler) {
sendString(MOVE, toPayload(key, destdb), handler);
return this;
}
@Override
public RedisTransaction mset(JsonObject keyvals, Handler<AsyncResult<String>> handler) {
sendString(MSET, toPayload(keyvals), handler);
return this;
}
@Override
public RedisTransaction msetnx(JsonObject keyvals, Handler<AsyncResult<String>> handler) {
sendString(MSETNX, toPayload(keyvals), handler);
return this;
}
@Override
public RedisTransaction multi(Handler<AsyncResult<String>> handler) {
sendString(MULTI, null, handler);
return this;
}
@Override
public RedisTransaction object(String key, ObjectCmd cmd, Handler<AsyncResult<String>> handler) {
sendString(OBJECT, toPayload(cmd.name(), key), handler);
return this;
}
@Override
public RedisTransaction persist(String key, Handler<AsyncResult<String>> handler) {
sendString(PERSIST, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction pexpire(String key, long millis, Handler<AsyncResult<String>> handler) {
sendString(PEXPIRE, toPayload(key, millis), handler);
return this;
}
@Override
public RedisTransaction pexpireat(String key, long millis, Handler<AsyncResult<String>> handler) {
sendString(PEXPIREAT, toPayload(key, millis), handler);
return this;
}
@Override
public RedisTransaction pfadd(String key, String element, Handler<AsyncResult<String>> handler) {
sendString(PFADD, toPayload(key, element), handler);
return this;
}
@Override
public RedisTransaction pfaddMany(String key, List<String> elements, Handler<AsyncResult<String>> handler) {
sendString(PFADD, toPayload(key, elements), handler);
return this;
}
@Override
public RedisTransaction pfcount(String key, Handler<AsyncResult<String>> handler) {
sendString(PFCOUNT, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction pfcountMany(List<String> key, Handler<AsyncResult<String>> handler) {
sendString(PFCOUNT, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction pfmerge(String destkey, List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(PFMERGE, toPayload(destkey, keys), handler);
return this;
}
@Override
public RedisTransaction ping(Handler<AsyncResult<String>> handler) {
sendString(PING, null, handler);
return this;
}
@Override
public RedisTransaction psetex(String key, long millis, String value, Handler<AsyncResult<String>> handler) {
sendString(PSETEX, toPayload(key, millis, value), handler);
return this;
}
@Override
public RedisTransaction psubscribe(String pattern, Handler<AsyncResult<String>> handler) {
sendString(PSUBSCRIBE, toPayload(pattern), handler);
return this;
}
@Override
public RedisTransaction psubscribeMany(List<String> patterns, Handler<AsyncResult<String>> handler) {
sendString(PSUBSCRIBE, toPayload(patterns), handler);
return this;
}
@Override
public RedisTransaction pubsubChannels(String pattern, Handler<AsyncResult<String>> handler) {
sendString(PUBSUB, toPayload("CHANNELS", pattern == null || "".equals(pattern) ? null : pattern), handler);
return this;
}
public RedisTransaction pubsubNumsub(List<String> channels, Handler<AsyncResult<String>> handler) {
sendString(PUBSUB, toPayload("NUMSUB", channels), handler);
return this;
}
public RedisTransaction pubsubNumpat(Handler<AsyncResult<String>> handler) {
sendString(PUBSUB, toPayload("NUMPAT"), handler);
return this;
}
@Override
public RedisTransaction pttl(String key, Handler<AsyncResult<String>> handler) {
sendString(PTTL, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction publish(String channel, String message, Handler<AsyncResult<String>> handler) {
sendString(PUBLISH, toPayload(channel, message), handler);
return this;
}
@Override
public RedisTransaction punsubscribe(List<String> patterns, Handler<AsyncResult<String>> handler) {
sendString(PUNSUBSCRIBE, toPayload(patterns), handler);
return this;
}
@Override
public RedisTransaction randomkey(Handler<AsyncResult<String>> handler) {
sendString(RANDOMKEY, null, handler);
return this;
}
@Override
public RedisTransaction rename(String key, String newkey, Handler<AsyncResult<String>> handler) {
sendString(RENAME, toPayload(key, newkey), handler);
return this;
}
@Override
public RedisTransaction renamenx(String key, String newkey, Handler<AsyncResult<String>> handler) {
sendString(RENAMENX, toPayload(key, newkey), handler);
return this;
}
@Override
public RedisTransaction restore(String key, long millis, String serialized, Handler<AsyncResult<String>> handler) {
sendString(RESTORE, toPayload(key, millis, RedisEncoding.decode(serialized)), handler);
return this;
}
@Override
public RedisTransaction role(Handler<AsyncResult<String>> handler) {
sendString(ROLE, null, handler);
return this;
}
@Override
public RedisTransaction rpop(String key, Handler<AsyncResult<String>> handler) {
sendString(RPOP, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction rpoplpush(String key, String destkey, Handler<AsyncResult<String>> handler) {
sendString(RPOPLPUSH, toPayload(key, destkey), handler);
return this;
}
@Override
public RedisTransaction rpushMany(String key, List<String> values, Handler<AsyncResult<String>> handler) {
sendString(RPUSH, toPayload(key, values), handler);
return this;
}
@Override
public RedisTransaction rpush(String key, String value, Handler<AsyncResult<String>> handler) {
sendString(RPUSH, toPayload(key, value), handler);
return this;
}
@Override
public RedisTransaction rpushx(String key, String value, Handler<AsyncResult<String>> handler) {
sendString(RPUSHX, toPayload(key, value), handler);
return this;
}
@Override
public RedisTransaction sadd(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(SADD, toPayload(key, member), handler);
return this;
}
@Override
public RedisTransaction saddMany(String key, List<String> members, Handler<AsyncResult<String>> handler) {
sendString(SADD, toPayload(key, members), handler);
return this;
}
@Override
public RedisTransaction save(Handler<AsyncResult<String>> handler) {
sendString(SAVE, null, handler);
return this;
}
@Override
public RedisTransaction scard(String key, Handler<AsyncResult<String>> handler) {
sendString(SCARD, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction scriptExists(String script, Handler<AsyncResult<String>> handler) {
sendString(SCRIPT, toPayload("EXISTS", script), handler);
return this;
}
@Override
public RedisTransaction scriptExistsMany(List<String> scripts, Handler<AsyncResult<String>> handler) {
sendString(SCRIPT, toPayload("EXISTS", scripts), handler);
return this;
}
@Override
public RedisTransaction scriptFlush(Handler<AsyncResult<String>> handler) {
sendString(SCRIPT, toPayload("FLUSH"), handler);
return this;
}
@Override
public RedisTransaction scriptKill(Handler<AsyncResult<String>> handler) {
sendString(SCRIPT, toPayload("KILL"), handler);
return this;
}
@Override
public RedisTransaction scriptLoad(String script, Handler<AsyncResult<String>> handler) {
sendString(SCRIPT, toPayload("LOAD", script), handler);
return this;
}
@Override
public RedisTransaction sdiff(String key, List<String> cmpkeys, Handler<AsyncResult<String>> handler) {
sendString(SDIFF, toPayload(key, cmpkeys), handler);
return this;
}
@Override
public RedisTransaction sdiffstore(String destkey, String key, List<String> cmpkeys, Handler<AsyncResult<String>> handler) {
sendString(SDIFFSTORE, toPayload(destkey, key, cmpkeys), handler);
return this;
}
@Override
public RedisTransaction select(int dbindex, Handler<AsyncResult<String>> handler) {
sendString(SELECT, toPayload(dbindex), handler);
return this;
}
@Override
public RedisTransaction set(String key, String value, Handler<AsyncResult<String>> handler) {
sendString(SET, toPayload(key, value), handler);
return this;
}
@Override
public RedisTransaction setWithOptions(String key, String value, SetOptions options, Handler<AsyncResult<String>> handler) {
sendString(SET, toPayload(key, value, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction setBinary(String key, Buffer value, Handler<AsyncResult<String>> handler) {
sendString(SET, toPayload(key, value), handler);
return this;
}
@Override
public RedisTransaction setBinaryWithOptions(String key, Buffer value, SetOptions options, Handler<AsyncResult<String>> handler) {
sendString(SET, toPayload(key, value, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction setbit(String key, long offset, int bit, Handler<AsyncResult<String>> handler) {
sendString(SETBIT, toPayload(key, offset, bit), handler);
return this;
}
@Override
public RedisTransaction setex(String key, long seconds, String value, Handler<AsyncResult<String>> handler) {
sendString(SETEX, toPayload(key, seconds, value), handler);
return this;
}
@Override
public RedisTransaction setnx(String key, String value, Handler<AsyncResult<String>> handler) {
sendString(SETNX, toPayload(key, value), handler);
return this;
}
@Override
public RedisTransaction setrange(String key, int offset, String value, Handler<AsyncResult<String>> handler) {
sendString(SETRANGE, toPayload(key, offset, value), handler);
return this;
}
@Override
public RedisTransaction sinter(List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(SINTER, toPayload(keys), handler);
return this;
}
@Override
public RedisTransaction sinterstore(String destkey, List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(SINTERSTORE, toPayload(destkey, keys), handler);
return this;
}
@Override
public RedisTransaction sismember(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(SISMEMBER, toPayload(key, member), handler);
return this;
}
@Override
public RedisTransaction slaveof(String host, int port, Handler<AsyncResult<String>> handler) {
sendString(SLAVEOF, toPayload(host, port), handler);
return this;
}
@Override
public RedisTransaction slaveofNoone(Handler<AsyncResult<String>> handler) {
sendString(SLAVEOF, toPayload("NO", "ONE"), handler);
return this;
}
@Override
public RedisTransaction slowlogGet(int limit, Handler<AsyncResult<String>> handler) {
sendString(SLOWLOG, toPayload("GET", limit < 0 ? null : limit), handler);
return this;
}
@Override
public RedisTransaction slowlogLen(Handler<AsyncResult<String>> handler) {
sendString(SLOWLOG, toPayload("LEN"), handler);
return this;
}
@Override
public RedisTransaction slowlogReset(Handler<AsyncResult<String>> handler) {
sendString(SLOWLOG, toPayload("RESET"), handler);
return this;
}
@Override
public RedisTransaction smembers(String key, Handler<AsyncResult<JsonArray>> handler) {
sendJsonArray(SMEMBERS, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction smove(String key, String destkey, String member, Handler<AsyncResult<String>> handler) {
sendString(SMOVE, toPayload(key, destkey, member), handler);
return this;
}
@Override
public RedisTransaction sort(String key, SortOptions options, Handler<AsyncResult<String>> handler) {
sendString(SORT, toPayload(key, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction spop(String key, Handler<AsyncResult<String>> handler) {
sendString(SPOP, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction spopMany(String key, int count, Handler<AsyncResult<String>> handler) {
sendString(SPOP, toPayload(key, count), handler);
return this;
}
@Override
public RedisTransaction srandmember(String key, Handler<AsyncResult<String>> handler) {
sendString(SRANDMEMBER, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction srandmemberCount(String key, int count, Handler<AsyncResult<String>> handler) {
sendString(SRANDMEMBER, toPayload(key, count), handler);
return this;
}
@Override
public RedisTransaction srem(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(SREM, toPayload(key, member), handler);
return this;
}
@Override
public RedisTransaction sremMany(String key, List<String> members, Handler<AsyncResult<String>> handler) {
sendString(SREM, toPayload(key, members), handler);
return this;
}
@Override
public RedisTransaction strlen(String key, Handler<AsyncResult<String>> handler) {
sendString(STRLEN, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction subscribe(String channel, Handler<AsyncResult<String>> handler) {
sendString(SUBSCRIBE, toPayload(channel), handler);
return this;
}
@Override
public RedisTransaction subscribeMany(List<String> channels, Handler<AsyncResult<String>> handler) {
sendString(SUBSCRIBE, toPayload(channels), handler);
return this;
}
@Override
public RedisTransaction sunion(List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(SUNION, toPayload(keys), handler);
return this;
}
@Override
public RedisTransaction sunionstore(String destkey, List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(SUNIONSTORE, toPayload(destkey, keys), handler);
return this;
}
@Override
public RedisTransaction sync(Handler<AsyncResult<String>> handler) {
sendString(SYNC, null, handler);
return this;
}
@Override
public RedisTransaction time(Handler<AsyncResult<String>> handler) {
sendString(TIME, null, handler);
return this;
}
@Override
public RedisTransaction ttl(String key, Handler<AsyncResult<String>> handler) {
sendString(TTL, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction type(String key, Handler<AsyncResult<String>> handler) {
sendString(TYPE, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction unsubscribe(List<String> channels, Handler<AsyncResult<String>> handler) {
sendString(UNSUBSCRIBE, toPayload(channels), handler);
return this;
}
@Override
public RedisTransaction unwatch(Handler<AsyncResult<String>> handler) {
sendString(UNWATCH, null, handler);
return this;
}
@Override
public RedisTransaction wait(long numSlaves, long timeout, Handler<AsyncResult<String>> handler) {
sendString(WAIT, toPayload(numSlaves, timeout), handler);
return this;
}
@Override
public RedisTransaction watch(String key, Handler<AsyncResult<String>> handler) {
sendString(WATCH, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction watchMany(List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(WATCH, toPayload(keys), handler);
return this;
}
@Override
public RedisTransaction zadd(String key, double score, String member, Handler<AsyncResult<String>> handler) {
sendString(ZADD, toPayload(key, score, member), handler);
return this;
}
@Override
public RedisTransaction zaddMany(String key, Map<String, Double> members, Handler<AsyncResult<String>> handler) {
Stream flipped = members.entrySet().stream().map(e -> new Object[]{e.getValue(), e.getKey()});
sendString(ZADD, toPayload(key, flipped), handler);
return this;
}
@Override
public RedisTransaction zcard(String key, Handler<AsyncResult<String>> handler) {
sendString(ZCARD, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction zcount(String key, double min, double max, Handler<AsyncResult<String>> handler) {
String minVal = (min == Double.NEGATIVE_INFINITY) ? "-inf" : String.valueOf(min);
String maxVal = (max == Double.POSITIVE_INFINITY) ? "+inf" : String.valueOf(max);
sendString(ZCOUNT, toPayload(key, minVal, maxVal), handler);
return this;
}
@Override
public RedisTransaction zincrby(String key, double increment, String member, Handler<AsyncResult<String>> handler) {
sendString(ZINCRBY, toPayload(key, increment, member), handler);
return this;
}
@Override
public RedisTransaction zinterstore(String destkey, List<String> sets, AggregateOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZINTERSTORE, toPayload(destkey, sets.size(), sets, options != null ? options.name() : null), handler);
return this;
}
@Override
public RedisTransaction zinterstoreWeighed(String destkey, Map<String, Double> sets, AggregateOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZINTERSTORE, toPayload(destkey, sets.size(), sets.keySet(), "WEIGHTS", sets.values(),
options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction zlexcount(String key, String min, String max, Handler<AsyncResult<String>> handler) {
sendString(ZLEXCOUNT, toPayload(key, min, max), handler);
return this;
}
@Override
public RedisTransaction zrange(String key, long start, long stop, Handler<AsyncResult<String>> handler) {
sendString(ZRANGE, toPayload(key, start, stop), handler);
return this;
}
@Override
public RedisTransaction zrangeWithOptions(String key, long start, long stop, RangeOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZRANGE, toPayload(key, start, stop, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction zrangebylex(String key, String min, String max, LimitOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZRANGEBYLEX, toPayload(key, min, max, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction zrangebyscore(String key, String min, String max, RangeLimitOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZRANGEBYSCORE, toPayload(key, min, max, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction zrank(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(ZRANK, toPayload(key, member), handler);
return this;
}
@Override
public RedisTransaction zrem(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(ZREM, toPayload(key, member), handler);
return this;
}
@Override
public RedisTransaction zremMany(String key, List<String> members, Handler<AsyncResult<String>> handler) {
sendString(ZREM, toPayload(key, members), handler);
return this;
}
@Override
public RedisTransaction zremrangebylex(String key, String min, String max, Handler<AsyncResult<String>> handler) {
sendString(ZREMRANGEBYLEX, toPayload(key, min, max), handler);
return this;
}
@Override
public RedisTransaction zremrangebyrank(String key, long start, long stop, Handler<AsyncResult<String>> handler) {
sendString(ZREMRANGEBYRANK, toPayload(key, start, stop), handler);
return this;
}
@Override
public RedisTransaction zremrangebyscore(String key, String min, String max, Handler<AsyncResult<String>> handler) {
sendString(ZREMRANGEBYSCORE, toPayload(key, min, max), handler);
return this;
}
@Override
public RedisTransaction zrevrange(String key, long start, long stop, RangeOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZREVRANGE, toPayload(key, start, stop, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction zrevrangebylex(String key, String max, String min, LimitOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZREVRANGEBYLEX, toPayload(key, max, min, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction zrevrangebyscore(String key, String max, String min, RangeLimitOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZREVRANGEBYSCORE, toPayload(key, max, min, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction zrevrank(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(ZREVRANK, toPayload(key, member), handler);
return this;
}
@Override
public RedisTransaction zscore(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(ZSCORE, toPayload(key, member), handler);
return this;
}
@Override
public RedisTransaction zunionstore(String destkey, List<String> sets, AggregateOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZUNIONSTORE, toPayload(destkey, sets.size(), sets, options != null ? options.name() : null), handler);
return this;
}
@Override
public RedisTransaction zunionstoreWeighed(String destkey, Map<String, Double> sets, AggregateOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZUNIONSTORE, toPayload(destkey, sets.size(), sets.keySet(), "WEIGHTS", sets.values(),
options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction scan(String cursor, ScanOptions options, Handler<AsyncResult<String>> handler) {
sendString(SCAN, toPayload(cursor, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction sscan(String key, String cursor, ScanOptions options, Handler<AsyncResult<String>> handler) {
sendString(SSCAN, toPayload(key, cursor, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction hscan(String key, String cursor, ScanOptions options, Handler<AsyncResult<String>> handler) {
sendString(HSCAN, toPayload(key, cursor, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction zscan(String key, String cursor, ScanOptions options, Handler<AsyncResult<String>> handler) {
sendString(ZSCAN, toPayload(key, cursor, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction geoadd(String key, double longitude, double latitude, String member, Handler<AsyncResult<String>> handler) {
sendString(GEOADD, toPayload(key, longitude, latitude, member), handler);
return this;
}
@Override
public RedisTransaction geoaddMany(String key, List<GeoMember> members, Handler<AsyncResult<String>> handler) {
sendString(GEOADD, toPayload(key, members), handler);
return this;
}
@Override
public RedisTransaction geohash(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(GEOHASH, toPayload(key, member), handler);
return this;
}
@Override
public RedisTransaction geohashMany(String key, List<String> members, Handler<AsyncResult<String>> handler) {
sendString(GEOHASH, toPayload(key, members), handler);
return this;
}
@Override
public RedisTransaction geopos(String key, String member, Handler<AsyncResult<String>> handler) {
sendString(GEOPOS, toPayload(key, member), handler);
return this;
}
@Override
public RedisTransaction geoposMany(String key, List<String> members, Handler<AsyncResult<String>> handler) {
sendString(GEOPOS, toPayload(key, members), handler);
return this;
}
@Override
public RedisTransaction geodist(String key, String member1, String member2, Handler<AsyncResult<String>> handler) {
sendString(GEODIST, toPayload(key, member1, member2), handler);
return this;
}
@Override
public RedisTransaction geodistWithUnit(String key, String member1, String member2, GeoUnit unit, Handler<AsyncResult<String>> handler) {
sendString(GEODIST, toPayload(key, member1, member2, unit), handler);
return this;
}
@Override
public RedisTransaction georadius(String key, double longitude, double latitude, double radius, GeoUnit unit, Handler<AsyncResult<String>> handler) {
sendString(GEORADIUS, toPayload(key, longitude, latitude, radius, unit), handler);
return this;
}
@Override
public RedisTransaction georadiusWithOptions(String key, double longitude, double latitude, double radius, GeoUnit unit, GeoRadiusOptions options, Handler<AsyncResult<String>> handler) {
sendString(GEORADIUS, toPayload(key, longitude, latitude, radius, unit, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction georadiusbymember(String key, String member, double radius, GeoUnit unit, Handler<AsyncResult<String>> handler) {
sendString(GEORADIUSBYMEMBER, toPayload(key, member, radius, unit), handler);
return this;
}
@Override
public RedisTransaction georadiusbymemberWithOptions(String key, String member, double radius, GeoUnit unit, GeoRadiusOptions options, Handler<AsyncResult<String>> handler) {
sendString(GEORADIUSBYMEMBER, toPayload(key, member, radius, unit, options != null ? options.toJsonArray() : null), handler);
return this;
}
@Override
public RedisTransaction unlink(String key, Handler<AsyncResult<String>> handler) {
sendString(UNLINK, toPayload(key), handler);
return this;
}
@Override
public RedisTransaction unlinkMany(List<String> keys, Handler<AsyncResult<String>> handler) {
sendString(UNLINK, toPayload(keys), handler);
return this;
}
@Override
public RedisTransaction swapdb(int index1, int index2, Handler<AsyncResult<String>> handler) {
sendString(SWAPDB, toPayload(index1, index2), handler);
return this;
}
}
}