Skip to content

Commit 31c1787

Browse files
committed
Move new commands to RedisHashCommands, added HEXPIREAT, HEXPIRETIME and HPERSIST
1 parent 0e867eb commit 31c1787

23 files changed

+1686
-539
lines changed

src/main/java/io/lettuce/core/AbstractRedisAsyncCommands.java

Lines changed: 73 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,21 @@
1919
*/
2020
package io.lettuce.core;
2121

22-
import static io.lettuce.core.protocol.CommandType.*;
23-
24-
import java.time.Duration;
25-
import java.time.Instant;
26-
import java.util.Date;
27-
import java.util.List;
28-
import java.util.Map;
29-
import java.util.Set;
30-
3122
import io.lettuce.core.GeoArgs.Unit;
3223
import io.lettuce.core.api.StatefulConnection;
33-
import io.lettuce.core.api.async.*;
24+
import io.lettuce.core.api.async.BaseRedisAsyncCommands;
25+
import io.lettuce.core.api.async.RedisAclAsyncCommands;
26+
import io.lettuce.core.api.async.RedisGeoAsyncCommands;
27+
import io.lettuce.core.api.async.RedisHLLAsyncCommands;
28+
import io.lettuce.core.api.async.RedisHashAsyncCommands;
29+
import io.lettuce.core.api.async.RedisKeyAsyncCommands;
30+
import io.lettuce.core.api.async.RedisListAsyncCommands;
31+
import io.lettuce.core.api.async.RedisScriptingAsyncCommands;
32+
import io.lettuce.core.api.async.RedisServerAsyncCommands;
33+
import io.lettuce.core.api.async.RedisSetAsyncCommands;
34+
import io.lettuce.core.api.async.RedisSortedSetAsyncCommands;
35+
import io.lettuce.core.api.async.RedisStringAsyncCommands;
36+
import io.lettuce.core.api.async.RedisTransactionalAsyncCommands;
3437
import io.lettuce.core.cluster.api.async.RedisClusterAsyncCommands;
3538
import io.lettuce.core.codec.Base16;
3639
import io.lettuce.core.codec.RedisCodec;
@@ -50,6 +53,19 @@
5053
import io.lettuce.core.protocol.ProtocolKeyword;
5154
import io.lettuce.core.protocol.RedisCommand;
5255

56+
import java.time.Duration;
57+
import java.time.Instant;
58+
import java.util.Date;
59+
import java.util.List;
60+
import java.util.Map;
61+
import java.util.Set;
62+
63+
import static io.lettuce.core.protocol.CommandType.EXEC;
64+
import static io.lettuce.core.protocol.CommandType.GEORADIUS;
65+
import static io.lettuce.core.protocol.CommandType.GEORADIUSBYMEMBER;
66+
import static io.lettuce.core.protocol.CommandType.GEORADIUSBYMEMBER_RO;
67+
import static io.lettuce.core.protocol.CommandType.GEORADIUS_RO;
68+
5369
/**
5470
* An asynchronous and thread-safe API for a Redis connection.
5571
*
@@ -795,22 +811,22 @@ public RedisFuture<Boolean> expire(K key, Duration seconds, ExpireArgs expireArg
795811
}
796812

797813
@Override
798-
public RedisFuture<Boolean> hexpire(K key, long seconds, List<V> fields) {
814+
public RedisFuture<Boolean> hexpire(K key, long seconds, K... fields) {
799815
return hexpire(key, seconds, null, fields);
800816
}
801817

802818
@Override
803-
public RedisFuture<Boolean> hexpire(K key, long seconds, ExpireArgs expireArgs, List<V> fields) {
819+
public RedisFuture<Boolean> hexpire(K key, long seconds, ExpireArgs expireArgs, K... fields) {
804820
return dispatch(commandBuilder.hexpire(key, seconds, expireArgs, fields));
805821
}
806822

807823
@Override
808-
public RedisFuture<Boolean> hexpire(K key, Duration seconds, List<V> fields) {
824+
public RedisFuture<Boolean> hexpire(K key, Duration seconds, K... fields) {
809825
return hexpire(key, seconds, null, fields);
810826
}
811827

812828
@Override
813-
public RedisFuture<Boolean> hexpire(K key, Duration seconds, ExpireArgs expireArgs, List<V> fields) {
829+
public RedisFuture<Boolean> hexpire(K key, Duration seconds, ExpireArgs expireArgs, K... fields) {
814830
LettuceAssert.notNull(seconds, "Timeout must not be null");
815831
return hexpire(key, seconds.toMillis() / 1000, expireArgs, fields);
816832
}
@@ -847,11 +863,49 @@ public RedisFuture<Boolean> expireat(K key, Instant timestamp, ExpireArgs expire
847863
return expireat(key, timestamp.toEpochMilli() / 1000, expireArgs);
848864
}
849865

866+
@Override
867+
public RedisFuture<Boolean> hexpireat(K key, long timestamp, K... fields) {
868+
return hexpireat(key, timestamp, null, fields);
869+
}
870+
871+
@Override
872+
public RedisFuture<Boolean> hexpireat(K key, long timestamp, ExpireArgs expireArgs, K... fields) {
873+
return dispatch(commandBuilder.hexpireat(key, timestamp, expireArgs, fields));
874+
875+
}
876+
877+
@Override
878+
public RedisFuture<Boolean> hexpireat(K key, Date timestamp, K... fields) {
879+
return hexpireat(key, timestamp, null, fields);
880+
}
881+
882+
@Override
883+
public RedisFuture<Boolean> hexpireat(K key, Date timestamp, ExpireArgs expireArgs, K... fields) {
884+
LettuceAssert.notNull(timestamp, "Timestamp must not be null");
885+
return hexpireat(key, timestamp.getTime() / 1000, expireArgs, fields);
886+
}
887+
888+
@Override
889+
public RedisFuture<Boolean> hexpireat(K key, Instant timestamp, K... fields) {
890+
return hexpireat(key, timestamp, null, fields);
891+
}
892+
893+
@Override
894+
public RedisFuture<Boolean> hexpireat(K key, Instant timestamp, ExpireArgs expireArgs, K... fields) {
895+
LettuceAssert.notNull(timestamp, "Timestamp must not be null");
896+
return hexpireat(key, timestamp.toEpochMilli() / 1000, expireArgs, fields);
897+
}
898+
850899
@Override
851900
public RedisFuture<Long> expiretime(K key) {
852901
return dispatch(commandBuilder.expiretime(key));
853902
}
854903

904+
@Override
905+
public RedisFuture<Long> hexpiretime(K key, K... fields) {
906+
return dispatch(commandBuilder.hexpiretime(key, fields));
907+
}
908+
855909
@Override
856910
public <T> RedisFuture<T> fcall(String function, ScriptOutputType type, K... keys) {
857911
return dispatch(commandBuilder.fcall(function, type, false, keys));
@@ -1510,6 +1564,11 @@ public RedisFuture<Boolean> persist(K key) {
15101564
return dispatch(commandBuilder.persist(key));
15111565
}
15121566

1567+
@Override
1568+
public RedisFuture<Boolean> hpersist(K key, K... fields) {
1569+
return dispatch(commandBuilder.hpersist(key, fields));
1570+
}
1571+
15131572
@Override
15141573
public RedisFuture<Boolean> pexpire(K key, long milliseconds) {
15151574
return pexpire(key, milliseconds, null);

src/main/java/io/lettuce/core/AbstractRedisReactiveCommands.java

Lines changed: 73 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,21 @@
1919
*/
2020
package io.lettuce.core;
2121

22-
import static io.lettuce.core.protocol.CommandType.*;
23-
24-
import java.time.Duration;
25-
import java.time.Instant;
26-
import java.util.Date;
27-
import java.util.List;
28-
import java.util.Map;
29-
import java.util.Set;
30-
import java.util.function.Supplier;
31-
3222
import io.lettuce.core.GeoArgs.Unit;
3323
import io.lettuce.core.api.StatefulConnection;
34-
import io.lettuce.core.api.reactive.*;
24+
import io.lettuce.core.api.reactive.BaseRedisReactiveCommands;
25+
import io.lettuce.core.api.reactive.RedisAclReactiveCommands;
26+
import io.lettuce.core.api.reactive.RedisGeoReactiveCommands;
27+
import io.lettuce.core.api.reactive.RedisHLLReactiveCommands;
28+
import io.lettuce.core.api.reactive.RedisHashReactiveCommands;
29+
import io.lettuce.core.api.reactive.RedisKeyReactiveCommands;
30+
import io.lettuce.core.api.reactive.RedisListReactiveCommands;
31+
import io.lettuce.core.api.reactive.RedisScriptingReactiveCommands;
32+
import io.lettuce.core.api.reactive.RedisServerReactiveCommands;
33+
import io.lettuce.core.api.reactive.RedisSetReactiveCommands;
34+
import io.lettuce.core.api.reactive.RedisSortedSetReactiveCommands;
35+
import io.lettuce.core.api.reactive.RedisStringReactiveCommands;
36+
import io.lettuce.core.api.reactive.RedisTransactionalReactiveCommands;
3537
import io.lettuce.core.cluster.api.reactive.RedisClusterReactiveCommands;
3638
import io.lettuce.core.codec.Base16;
3739
import io.lettuce.core.codec.RedisCodec;
@@ -59,6 +61,20 @@
5961
import reactor.core.publisher.Flux;
6062
import reactor.core.publisher.Mono;
6163

64+
import java.time.Duration;
65+
import java.time.Instant;
66+
import java.util.Date;
67+
import java.util.List;
68+
import java.util.Map;
69+
import java.util.Set;
70+
import java.util.function.Supplier;
71+
72+
import static io.lettuce.core.protocol.CommandType.EXEC;
73+
import static io.lettuce.core.protocol.CommandType.GEORADIUS;
74+
import static io.lettuce.core.protocol.CommandType.GEORADIUSBYMEMBER;
75+
import static io.lettuce.core.protocol.CommandType.GEORADIUSBYMEMBER_RO;
76+
import static io.lettuce.core.protocol.CommandType.GEORADIUS_RO;
77+
6278
/**
6379
* A reactive and thread-safe API for a Redis connection.
6480
*
@@ -855,22 +871,22 @@ public Mono<Boolean> expire(K key, Duration seconds, ExpireArgs expireArgs) {
855871
}
856872

857873
@Override
858-
public Mono<Boolean> hexpire(K key, long seconds, List<V> fields) {
874+
public Mono<Boolean> hexpire(K key, long seconds, K... fields) {
859875
return hexpire(key, seconds, null, fields);
860876
}
861877

862878
@Override
863-
public Mono<Boolean> hexpire(K key, long seconds, ExpireArgs expireArgs, List<V> fields) {
879+
public Mono<Boolean> hexpire(K key, long seconds, ExpireArgs expireArgs, K... fields) {
864880
return createMono(() -> commandBuilder.hexpire(key, seconds, expireArgs, fields));
865881
}
866882

867883
@Override
868-
public Mono<Boolean> hexpire(K key, Duration seconds, List<V> fields) {
884+
public Mono<Boolean> hexpire(K key, Duration seconds, K... fields) {
869885
return hexpire(key, seconds, null, fields);
870886
}
871887

872888
@Override
873-
public Mono<Boolean> hexpire(K key, Duration seconds, ExpireArgs expireArgs, List<V> fields) {
889+
public Mono<Boolean> hexpire(K key, Duration seconds, ExpireArgs expireArgs, K... fields) {
874890
LettuceAssert.notNull(seconds, "Timeout must not be null");
875891
return hexpire(key, seconds.toMillis() / 1000, expireArgs, fields);
876892
}
@@ -907,11 +923,48 @@ public Mono<Boolean> expireat(K key, Instant timestamp, ExpireArgs expireArgs) {
907923
return expireat(key, timestamp.toEpochMilli() / 1000, expireArgs);
908924
}
909925

926+
@Override
927+
public Mono<Boolean> hexpireat(K key, long timestamp, K... fields) {
928+
return hexpireat(key, timestamp, null, fields);
929+
}
930+
931+
@Override
932+
public Mono<Boolean> hexpireat(K key, long timestamp, ExpireArgs expireArgs, K... fields) {
933+
return createMono(() -> commandBuilder.hexpireat(key, timestamp, expireArgs, fields));
934+
}
935+
936+
@Override
937+
public Mono<Boolean> hexpireat(K key, Date timestamp, K... fields) {
938+
return hexpireat(key, timestamp, null, fields);
939+
}
940+
941+
@Override
942+
public Mono<Boolean> hexpireat(K key, Date timestamp, ExpireArgs expireArgs, K... fields) {
943+
LettuceAssert.notNull(timestamp, "Timestamp must not be null");
944+
return hexpireat(key, timestamp.getTime() / 1000, expireArgs, fields);
945+
}
946+
947+
@Override
948+
public Mono<Boolean> hexpireat(K key, Instant timestamp, K... fields) {
949+
return hexpireat(key, timestamp, null, fields);
950+
}
951+
952+
@Override
953+
public Mono<Boolean> hexpireat(K key, Instant timestamp, ExpireArgs expireArgs, K... fields) {
954+
LettuceAssert.notNull(timestamp, "Timestamp must not be null");
955+
return hexpireat(key, timestamp.toEpochMilli() / 1000, expireArgs, fields);
956+
}
957+
910958
@Override
911959
public Mono<Long> expiretime(K key) {
912960
return createMono(() -> commandBuilder.expiretime(key));
913961
}
914962

963+
@Override
964+
public Mono<Long> hexpiretime(K key, K... fields) {
965+
return createMono(() -> commandBuilder.hexpiretime(key, fields));
966+
}
967+
915968
@Override
916969
public <T> Flux<T> fcall(String function, ScriptOutputType type, K... keys) {
917970
return createFlux(() -> commandBuilder.fcall(function, type, false, keys));
@@ -1577,6 +1630,11 @@ public Mono<Boolean> persist(K key) {
15771630
return createMono(() -> commandBuilder.persist(key));
15781631
}
15791632

1633+
@Override
1634+
public Mono<Boolean> hpersist(K key, K... fields) {
1635+
return createMono(() -> commandBuilder.hpersist(key, fields));
1636+
}
1637+
15801638
@Override
15811639
public Mono<Boolean> pexpire(K key, long milliseconds) {
15821640
return pexpire(key, milliseconds, null);

0 commit comments

Comments
 (0)