
io.lettuce.core.AbstractRedisAsyncCommands Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lettuce-core Show documentation
Show all versions of lettuce-core Show documentation
Advanced and thread-safe Java Redis client for synchronous, asynchronous, and
reactive usage. Supports Cluster, Sentinel, Pipelining, Auto-Reconnect, Codecs
and much more.
The newest version!
/*
* Copyright 2011-Present, Redis Ltd. and Contributors
* All rights reserved.
*
* Licensed under the MIT License.
*
* This file contains contributions from third-party contributors
* licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.lettuce.core;
import io.lettuce.core.GeoArgs.Unit;
import io.lettuce.core.api.StatefulConnection;
import io.lettuce.core.api.async.*;
import io.lettuce.core.cluster.api.async.RedisClusterAsyncCommands;
import io.lettuce.core.codec.Base16;
import io.lettuce.core.codec.RedisCodec;
import io.lettuce.core.internal.LettuceAssert;
import io.lettuce.core.json.JsonParser;
import io.lettuce.core.json.JsonType;
import io.lettuce.core.json.JsonValue;
import io.lettuce.core.json.arguments.JsonGetArgs;
import io.lettuce.core.json.arguments.JsonMsetArgs;
import io.lettuce.core.json.JsonPath;
import io.lettuce.core.json.arguments.JsonRangeArgs;
import io.lettuce.core.json.arguments.JsonSetArgs;
import io.lettuce.core.models.stream.ClaimedMessages;
import io.lettuce.core.models.stream.PendingMessage;
import io.lettuce.core.models.stream.PendingMessages;
import io.lettuce.core.output.CommandOutput;
import io.lettuce.core.output.KeyStreamingChannel;
import io.lettuce.core.output.KeyValueStreamingChannel;
import io.lettuce.core.output.ScoredValueStreamingChannel;
import io.lettuce.core.output.ValueStreamingChannel;
import io.lettuce.core.protocol.AsyncCommand;
import io.lettuce.core.protocol.Command;
import io.lettuce.core.protocol.CommandArgs;
import io.lettuce.core.protocol.CommandType;
import io.lettuce.core.protocol.ProtocolKeyword;
import io.lettuce.core.protocol.RedisCommand;
import reactor.core.publisher.Mono;
import java.time.Duration;
import java.time.Instant;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static io.lettuce.core.protocol.CommandType.EXEC;
import static io.lettuce.core.protocol.CommandType.GEORADIUSBYMEMBER_RO;
import static io.lettuce.core.protocol.CommandType.GEORADIUS_RO;
/**
* An asynchronous and thread-safe API for a Redis connection.
*
* @param Key type.
* @param Value type.
* @author Will Glozer
* @author Mark Paluch
* @author Tugdual Grall
* @author dengliming
* @author Andrey Shlykov
* @author Ali Takavci
*/
@SuppressWarnings("unchecked")
public abstract class AbstractRedisAsyncCommands implements RedisAclAsyncCommands, RedisHashAsyncCommands,
RedisKeyAsyncCommands, RedisStringAsyncCommands, RedisListAsyncCommands, RedisSetAsyncCommands,
RedisSortedSetAsyncCommands, RedisScriptingAsyncCommands, RedisServerAsyncCommands,
RedisHLLAsyncCommands, BaseRedisAsyncCommands, RedisTransactionalAsyncCommands,
RedisGeoAsyncCommands, RedisClusterAsyncCommands, RedisJsonAsyncCommands {
private final StatefulConnection connection;
private final RedisCommandBuilder commandBuilder;
private final RedisJsonCommandBuilder jsonCommandBuilder;
private final Mono parser;
/**
* Initialize a new instance.
*
* @param connection the connection to operate on
* @param codec the codec for command encoding
*/
public AbstractRedisAsyncCommands(StatefulConnection connection, RedisCodec codec, Mono parser) {
this.parser = parser;
this.connection = connection;
this.commandBuilder = new RedisCommandBuilder<>(codec);
this.jsonCommandBuilder = new RedisJsonCommandBuilder<>(codec, parser);
}
@Override
public RedisFuture> aclCat() {
return dispatch(commandBuilder.aclCat());
}
@Override
public RedisFuture> aclCat(AclCategory category) {
return dispatch(commandBuilder.aclCat(category));
}
@Override
public RedisFuture aclDeluser(String... usernames) {
return dispatch(commandBuilder.aclDeluser(usernames));
}
@Override
public RedisFuture aclDryRun(String username, String command, String... args) {
return dispatch(commandBuilder.aclDryRun(username, command, args));
}
@Override
public RedisFuture aclDryRun(String username, RedisCommand command) {
return dispatch(commandBuilder.aclDryRun(username, command));
}
@Override
public RedisFuture aclGenpass() {
return dispatch(commandBuilder.aclGenpass());
}
@Override
public RedisFuture aclGenpass(int bits) {
return dispatch(commandBuilder.aclGenpass(bits));
}
@Override
public RedisFuture> aclGetuser(String username) {
return dispatch(commandBuilder.aclGetuser(username));
}
@Override
public RedisFuture> aclList() {
return dispatch(commandBuilder.aclList());
}
@Override
public RedisFuture aclLoad() {
return dispatch(commandBuilder.aclLoad());
}
@Override
public RedisFuture>> aclLog() {
return dispatch(commandBuilder.aclLog());
}
@Override
public RedisFuture>> aclLog(int count) {
return dispatch(commandBuilder.aclLog(count));
}
@Override
public RedisFuture aclLogReset() {
return dispatch(commandBuilder.aclLogReset());
}
@Override
public RedisFuture aclSave() {
return dispatch(commandBuilder.aclSave());
}
@Override
public RedisFuture aclSetuser(String username, AclSetuserArgs args) {
return dispatch(commandBuilder.aclSetuser(username, args));
}
@Override
public RedisFuture> aclUsers() {
return dispatch(commandBuilder.aclUsers());
}
@Override
public RedisFuture aclWhoami() {
return dispatch(commandBuilder.aclWhoami());
}
@Override
public RedisFuture append(K key, V value) {
return dispatch(commandBuilder.append(key, value));
}
@Override
public RedisFuture asking() {
return dispatch(commandBuilder.asking());
}
@Override
public RedisFuture auth(CharSequence password) {
LettuceAssert.notNull(password, "Password must not be null");
return dispatch(commandBuilder.auth(password));
}
public RedisFuture auth(char[] password) {
LettuceAssert.notNull(password, "Password must not be null");
return dispatch(commandBuilder.auth(password));
}
@Override
public RedisFuture auth(String username, CharSequence password) {
LettuceAssert.notNull(username, "Username must not be null");
LettuceAssert.notNull(password, "Password must not be null");
return dispatch(commandBuilder.auth(username, password));
}
public RedisFuture auth(String username, char[] password) {
LettuceAssert.notNull(username, "Username must not be null");
LettuceAssert.notNull(password, "Password must not be null");
return dispatch(commandBuilder.auth(username, password));
}
@Override
public RedisFuture bgrewriteaof() {
return dispatch(commandBuilder.bgrewriteaof());
}
@Override
public RedisFuture bgsave() {
return dispatch(commandBuilder.bgsave());
}
@Override
public RedisFuture bitcount(K key) {
return dispatch(commandBuilder.bitcount(key));
}
@Override
public RedisFuture bitcount(K key, long start, long end) {
return dispatch(commandBuilder.bitcount(key, start, end));
}
@Override
public RedisFuture> bitfield(K key, BitFieldArgs bitFieldArgs) {
return dispatch(commandBuilder.bitfield(key, bitFieldArgs));
}
@Override
public RedisFuture bitopAnd(K destination, K... keys) {
return dispatch(commandBuilder.bitopAnd(destination, keys));
}
@Override
public RedisFuture bitopNot(K destination, K source) {
return dispatch(commandBuilder.bitopNot(destination, source));
}
@Override
public RedisFuture bitopOr(K destination, K... keys) {
return dispatch(commandBuilder.bitopOr(destination, keys));
}
@Override
public RedisFuture bitopXor(K destination, K... keys) {
return dispatch(commandBuilder.bitopXor(destination, keys));
}
@Override
public RedisFuture bitpos(K key, boolean state) {
return dispatch(commandBuilder.bitpos(key, state));
}
@Override
public RedisFuture bitpos(K key, boolean state, long start) {
return dispatch(commandBuilder.bitpos(key, state, start));
}
@Override
public RedisFuture bitpos(K key, boolean state, long start, long end) {
return dispatch(commandBuilder.bitpos(key, state, start, end));
}
@Override
public RedisFuture blmove(K source, K destination, LMoveArgs args, long timeout) {
return dispatch(commandBuilder.blmove(source, destination, args, timeout));
}
@Override
public RedisFuture blmove(K source, K destination, LMoveArgs args, double timeout) {
return dispatch(commandBuilder.blmove(source, destination, args, timeout));
}
@Override
public RedisFuture>> blmpop(long timeout, LMPopArgs args, K... keys) {
return dispatch(commandBuilder.blmpop(timeout, args, keys));
}
@Override
public RedisFuture>> blmpop(double timeout, LMPopArgs args, K... keys) {
return dispatch(commandBuilder.blmpop(timeout, args, keys));
}
@Override
public RedisFuture> blpop(long timeout, K... keys) {
return dispatch(commandBuilder.blpop(timeout, keys));
}
@Override
public RedisFuture> blpop(double timeout, K... keys) {
return dispatch(commandBuilder.blpop(timeout, keys));
}
@Override
public RedisFuture> brpop(long timeout, K... keys) {
return dispatch(commandBuilder.brpop(timeout, keys));
}
@Override
public RedisFuture> brpop(double timeout, K... keys) {
return dispatch(commandBuilder.brpop(timeout, keys));
}
@Override
public RedisFuture brpoplpush(long timeout, K source, K destination) {
return dispatch(commandBuilder.brpoplpush(timeout, source, destination));
}
@Override
public RedisFuture brpoplpush(double timeout, K source, K destination) {
return dispatch(commandBuilder.brpoplpush(timeout, source, destination));
}
@Override
public RedisFuture clientCaching(boolean enabled) {
return dispatch(commandBuilder.clientCaching(enabled));
}
@Override
public RedisFuture clientGetname() {
return dispatch(commandBuilder.clientGetname());
}
@Override
public RedisFuture clientGetredir() {
return dispatch(commandBuilder.clientGetredir());
}
@Override
public RedisFuture clientKill(String addr) {
return dispatch(commandBuilder.clientKill(addr));
}
@Override
public RedisFuture clientKill(KillArgs killArgs) {
return dispatch(commandBuilder.clientKill(killArgs));
}
@Override
public RedisFuture clientList() {
return dispatch(commandBuilder.clientList());
}
@Override
public RedisFuture clientList(ClientListArgs clientListArgs) {
return dispatch(commandBuilder.clientList(clientListArgs));
}
@Override
public RedisFuture clientInfo() {
return dispatch(commandBuilder.clientInfo());
}
@Override
public RedisFuture clientNoEvict(boolean on) {
return dispatch(commandBuilder.clientNoEvict(on));
}
@Override
public RedisFuture clientId() {
return dispatch(commandBuilder.clientId());
}
@Override
public RedisFuture clientPause(long timeout) {
return dispatch(commandBuilder.clientPause(timeout));
}
@Override
public RedisFuture clientSetname(K name) {
return dispatch(commandBuilder.clientSetname(name));
}
@Override
public RedisFuture clientSetinfo(String key, String value) {
return dispatch(commandBuilder.clientSetinfo(key, value));
}
@Override
public RedisFuture clientTracking(TrackingArgs args) {
return dispatch(commandBuilder.clientTracking(args));
}
@Override
public RedisFuture clientTrackinginfo() {
return dispatch(commandBuilder.clientTrackinginfo());
}
@Override
public RedisFuture clientUnblock(long id, UnblockType type) {
return dispatch(commandBuilder.clientUnblock(id, type));
}
@Override
public RedisFuture clusterAddSlots(int... slots) {
return dispatch(commandBuilder.clusterAddslots(slots));
}
@Override
public RedisFuture clusterAddSlotsRange(Range... ranges) {
return dispatch(commandBuilder.clusterAddSlotsRange(ranges));
}
@Override
public RedisFuture clusterBumpepoch() {
return dispatch(commandBuilder.clusterBumpepoch());
}
@Override
public RedisFuture clusterCountFailureReports(String nodeId) {
return dispatch(commandBuilder.clusterCountFailureReports(nodeId));
}
@Override
public RedisFuture clusterCountKeysInSlot(int slot) {
return dispatch(commandBuilder.clusterCountKeysInSlot(slot));
}
@Override
public RedisFuture clusterDelSlots(int... slots) {
return dispatch(commandBuilder.clusterDelslots(slots));
}
@Override
public RedisFuture clusterDelSlotsRange(Range... ranges) {
return dispatch(commandBuilder.clusterDelSlotsRange(ranges));
}
@Override
public RedisFuture clusterFailover(boolean force) {
return dispatch(commandBuilder.clusterFailover(force));
}
@Override
public RedisFuture clusterFailover(boolean force, boolean takeOver) {
return dispatch(commandBuilder.clusterFailover(force, takeOver));
}
@Override
public RedisFuture clusterFlushslots() {
return dispatch(commandBuilder.clusterFlushslots());
}
@Override
public RedisFuture clusterForget(String nodeId) {
return dispatch(commandBuilder.clusterForget(nodeId));
}
@Override
public RedisFuture> clusterGetKeysInSlot(int slot, int count) {
return dispatch(commandBuilder.clusterGetKeysInSlot(slot, count));
}
@Override
public RedisFuture clusterInfo() {
return dispatch(commandBuilder.clusterInfo());
}
@Override
public RedisFuture clusterKeyslot(K key) {
return dispatch(commandBuilder.clusterKeyslot(key));
}
@Override
public RedisFuture clusterMeet(String ip, int port) {
return dispatch(commandBuilder.clusterMeet(ip, port));
}
@Override
public RedisFuture clusterMyId() {
return dispatch(commandBuilder.clusterMyId());
}
@Override
public RedisFuture clusterMyShardId() {
return dispatch(commandBuilder.clusterMyShardId());
}
@Override
public RedisFuture clusterNodes() {
return dispatch(commandBuilder.clusterNodes());
}
@Override
public RedisFuture clusterReplicate(String nodeId) {
return dispatch(commandBuilder.clusterReplicate(nodeId));
}
@Override
public RedisFuture> clusterReplicas(String nodeId) {
return dispatch(commandBuilder.clusterReplicas(nodeId));
}
@Override
public RedisFuture clusterReset(boolean hard) {
return dispatch(commandBuilder.clusterReset(hard));
}
@Override
public RedisFuture clusterSaveconfig() {
return dispatch(commandBuilder.clusterSaveconfig());
}
@Override
public RedisFuture clusterSetConfigEpoch(long configEpoch) {
return dispatch(commandBuilder.clusterSetConfigEpoch(configEpoch));
}
@Override
public RedisFuture clusterSetSlotImporting(int slot, String nodeId) {
return dispatch(commandBuilder.clusterSetSlotImporting(slot, nodeId));
}
@Override
public RedisFuture clusterSetSlotMigrating(int slot, String nodeId) {
return dispatch(commandBuilder.clusterSetSlotMigrating(slot, nodeId));
}
@Override
public RedisFuture clusterSetSlotNode(int slot, String nodeId) {
return dispatch(commandBuilder.clusterSetSlotNode(slot, nodeId));
}
@Override
public RedisFuture clusterSetSlotStable(int slot) {
return dispatch(commandBuilder.clusterSetSlotStable(slot));
}
@Override
public RedisFuture> clusterShards() {
return dispatch(commandBuilder.clusterShards());
}
@Override
public RedisFuture> clusterSlaves(String nodeId) {
return dispatch(commandBuilder.clusterSlaves(nodeId));
}
@Override
public RedisFuture> clusterSlots() {
return dispatch(commandBuilder.clusterSlots());
}
@Override
public RedisFuture> command() {
return dispatch(commandBuilder.command());
}
@Override
public RedisFuture commandCount() {
return dispatch(commandBuilder.commandCount());
}
@Override
public RedisFuture> commandInfo(String... commands) {
return dispatch(commandBuilder.commandInfo(commands));
}
@Override
public RedisFuture> commandInfo(CommandType... commands) {
String[] stringCommands = new String[commands.length];
for (int i = 0; i < commands.length; i++) {
stringCommands[i] = commands[i].name();
}
return commandInfo(stringCommands);
}
@Override
public RedisFuture