diff --git a/src/main/java/META-INF/persistence-template.xml b/src/main/java/META-INF/persistence-template.xml deleted file mode 100644 index e4695f1ad..000000000 --- a/src/main/java/META-INF/persistence-template.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index b65f11d52..5ec3e35e1 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -963,11 +963,11 @@ public final class CacheMemorySource extends AbstractCacheSource { public long sdiffstore(final String key, final String srcKey, final String... srcKey2s) { Set rs = sdiff(srcKey, Object.class, srcKey2s); if (container.containsKey(key)) { - CopyOnWriteArraySet set = container.get(srcKey).csetValue; + Set set = container.get(srcKey).csetValue; set.clear(); set.addAll(rs); } else { - appendSetItem(CacheEntryType.OBJECT_SET, key, rs); + appendSetItem(CacheEntryType.SET_OBJECT, key, rs); } return rs.size(); } @@ -1012,11 +1012,11 @@ public final class CacheMemorySource extends AbstractCacheSource { public long sinterstore(final String key, final String srcKey, final String... srcKey2s) { Set rs = sinter(srcKey, Object.class, srcKey2s); if (container.containsKey(key)) { - CopyOnWriteArraySet set = container.get(srcKey).csetValue; + Set set = container.get(srcKey).csetValue; set.clear(); set.addAll(rs); } else { - appendSetItem(CacheEntryType.OBJECT_SET, key, rs); + appendSetItem(CacheEntryType.SET_OBJECT, key, rs); } return rs.size(); } @@ -1171,7 +1171,7 @@ public final class CacheMemorySource extends AbstractCacheSource { @Override public void lpush(final String key, final Type componentType, T... values) { for (T value : values) { - appendListItem(CacheEntryType.OBJECT_LIST, false, key, value); + appendListItem(CacheEntryType.LIST_OBJECT, false, key, value); } } @@ -1184,7 +1184,7 @@ public final class CacheMemorySource extends AbstractCacheSource { public void lpushx(final String key, final Type componentType, T... values) { if (container.containsKey(key)) { for (T value : values) { - appendListItem(CacheEntryType.OBJECT_LIST, false, key, value); + appendListItem(CacheEntryType.LIST_OBJECT, false, key, value); } } } @@ -1288,7 +1288,7 @@ public final class CacheMemorySource extends AbstractCacheSource { public void rpushx(String key, Type componentType, T... values) { if (container.containsKey(key)) { for (T value : values) { - appendListItem(CacheEntryType.OBJECT_LIST, key, value); + appendListItem(CacheEntryType.LIST_OBJECT, key, value); } } } @@ -1300,7 +1300,7 @@ public final class CacheMemorySource extends AbstractCacheSource { @Override public void rpush(String key, Type componentType, T... values) { - appendListItem(CacheEntryType.OBJECT_LIST, key, values); + appendListItem(CacheEntryType.LIST_OBJECT, key, values); } @Override @@ -1437,7 +1437,7 @@ public final class CacheMemorySource extends AbstractCacheSource { } CacheEntry entry = container.get(key); if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) { - CopyOnWriteArraySet set = new CopyOnWriteArraySet(); + Set set = cacheType == CacheEntryType.SET_SORTED ? Collections.synchronizedSet(new TreeSet<>()) : new CopyOnWriteArraySet(); entry = new CacheEntry(cacheType, key, null, set, null, null); CacheEntry old = container.putIfAbsent(key, entry); if (old != null) { @@ -1452,8 +1452,102 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public void sadd(String key, final Type componentType, T... values) { - appendSetItem(CacheEntryType.OBJECT_SET, key, List.of(values)); + public void zadd(String key, CacheScoredValue... values) { + List list = new ArrayList<>(); + for (CacheScoredValue v : values) { + list.add(new CacheScoredValue.NumberScoredValue(v)); + } + appendSetItem(CacheEntryType.SET_SORTED, key, list); + } + + @Override + public long zcard(String key) { + if (key == null) { + return 0L; + } + CacheEntry entry = container.get(key); + if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) { + return 0L; + } + return entry.csetValue.size(); + } + + @Override + public long zrem(String key, String... members) { + if (key == null) { + return 0L; + } + CacheEntry entry = container.get(key); + if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) { + return 0L; + } + Set sets = entry.csetValue; + long c = 0; + Set keys = Set.of(members); + Iterator it = sets.iterator(); + while (it.hasNext()) { + CacheScoredValue v = it.next(); + if (keys.contains(v.getValue())) { + c++; + it.remove(); + } + } + return c; + } + + @Override + public List zmscore(String key, Class scoreType, String... members) { + List list = new ArrayList<>(); + if (key == null) { + for (int i = 0; i < members.length; i++) { + list.add(null); + } + return list; + } + CacheEntry entry = container.get(key); + if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) { + for (int i = 0; i < members.length; i++) { + list.add(null); + } + return list; + } + Set keys = Set.of(members); + Set sets = entry.csetValue; + Map map = new HashMap<>(); + sets.stream().filter(v -> keys.contains(v.getValue())).forEach(v -> { + map.put(v.getValue(), formatScore(scoreType, v.getScore())); + }); + for (String m : members) { + list.add(map.get(m)); + } + return list; + } + + private T formatScore(Class scoreType, Number score) { + if (scoreType == int.class || scoreType == Integer.class) { + return (T) (Number) score.intValue(); + } else if (scoreType == long.class || scoreType == Long.class) { + return (T) (Number) score.longValue(); + } else if (scoreType == float.class || scoreType == Float.class) { + return (T) (Number) score.floatValue(); + } else if (scoreType == double.class || scoreType == Double.class) { + return (T) (Number) score.doubleValue(); + } else { + return (T) score; + } + } + + @Override + public T zscore(String key, Class scoreType, String member) { + if (key == null) { + return null; + } + CacheEntry entry = container.get(key); + if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) { + return null; + } + Set sets = entry.csetValue; + return (T) sets.stream().filter(v -> Objects.equals(member, v.getValue())).findAny().map(v -> v.getScore()).orElse(null); } @Override @@ -1461,6 +1555,11 @@ public final class CacheMemorySource extends AbstractCacheSource { return runAsync(() -> sadd(key, componentType, values), getExecutor()).whenComplete(futureCompleteConsumer); } + @Override + public CompletableFuture zcardAsync(String key) { + return supplyAsync(() -> zcard(key), getExecutor()).whenComplete(futureCompleteConsumer); + } + @Override public long srem(String key, Type type, T... values) { if (key == null) { @@ -1572,6 +1671,26 @@ public final class CacheMemorySource extends AbstractCacheSource { return supplyAsync(() -> sscan(key, componentType, cursor, limit, pattern), getExecutor()).whenComplete(futureCompleteConsumer); } + @Override + public CompletableFuture zaddAsync(String key, CacheScoredValue... values) { + return runAsync(() -> zadd(key, values), getExecutor()).whenComplete(futureCompleteConsumer); + } + + @Override + public CompletableFuture> zmscoreAsync(String key, Class type, String... members) { + return supplyAsync(() -> zmscore(key, type, members), getExecutor()).whenComplete(futureCompleteConsumer); + } + + @Override + public CompletableFuture zremAsync(String key, String... members) { + return supplyAsync(() -> zrem(key, members), getExecutor()).whenComplete(futureCompleteConsumer); + } + + @Override + public CompletableFuture zscoreAsync(String key, Class type, String member) { + return supplyAsync(() -> zscore(key, type, member), getExecutor()).whenComplete(futureCompleteConsumer); + } + protected CacheEntryType findEntryType(Type type) { if (type == String.class) { return CacheEntryType.STRING; @@ -1585,8 +1704,8 @@ public final class CacheMemorySource extends AbstractCacheSource { public static enum CacheEntryType { LONG, STRING, OBJECT, BYTES, ATOMIC, MAP, DOUBLE, - LONG_SET, STRING_SET, OBJECT_SET, - LONG_LIST, STRING_LIST, OBJECT_LIST; + SET_LONG, SET_STRING, SET_OBJECT, SET_SORTED, + LIST_LONG, LIST_STRING, LIST_OBJECT; } public static final class CacheEntry { @@ -1606,20 +1725,20 @@ public final class CacheMemorySource extends AbstractCacheSource { final ReentrantLock mapLock = new ReentrantLock(); - CopyOnWriteArraySet csetValue; + Set csetValue; ConcurrentLinkedDeque listValue; - public CacheEntry(CacheEntryType cacheType, String key, T objectValue, CopyOnWriteArraySet csetValue, ConcurrentLinkedDeque listValue, ConcurrentHashMap mapValue) { + public CacheEntry(CacheEntryType cacheType, String key, T objectValue, Set csetValue, ConcurrentLinkedDeque listValue, ConcurrentHashMap mapValue) { this(cacheType, 0, key, objectValue, csetValue, listValue, mapValue); } - public CacheEntry(CacheEntryType cacheType, int expireSeconds, String key, T objectValue, CopyOnWriteArraySet csetValue, ConcurrentLinkedDeque listValue, ConcurrentHashMap mapValue) { + public CacheEntry(CacheEntryType cacheType, int expireSeconds, String key, T objectValue, Set csetValue, ConcurrentLinkedDeque listValue, ConcurrentHashMap mapValue) { this(cacheType, expireSeconds, (int) (System.currentTimeMillis() / 1000), key, objectValue, csetValue, listValue, mapValue); } @ConstructorParameters({"cacheType", "expireSeconds", "lastAccessed", "key", "objectValue", "csetValue", "listValue", "mapValue"}) - public CacheEntry(CacheEntryType cacheType, int expireSeconds, int lastAccessed, String key, T objectValue, CopyOnWriteArraySet csetValue, ConcurrentLinkedDeque listValue, ConcurrentHashMap mapValue) { + public CacheEntry(CacheEntryType cacheType, int expireSeconds, int lastAccessed, String key, T objectValue, Set csetValue, ConcurrentLinkedDeque listValue, ConcurrentHashMap mapValue) { this.cacheType = cacheType; this.expireSeconds = expireSeconds; this.lastAccessed = lastAccessed; @@ -1637,12 +1756,12 @@ public final class CacheMemorySource extends AbstractCacheSource { @ConvertColumn(ignore = true) public boolean isListCacheType() { - return cacheType == CacheEntryType.LONG_LIST || cacheType == CacheEntryType.STRING_LIST || cacheType == CacheEntryType.OBJECT_LIST; + return cacheType == CacheEntryType.LIST_LONG || cacheType == CacheEntryType.LIST_STRING || cacheType == CacheEntryType.LIST_OBJECT; } @ConvertColumn(ignore = true) public boolean isSetCacheType() { - return cacheType == CacheEntryType.LONG_SET || cacheType == CacheEntryType.STRING_SET || cacheType == CacheEntryType.OBJECT_SET; + return cacheType == CacheEntryType.SET_LONG || cacheType == CacheEntryType.SET_STRING || cacheType == CacheEntryType.SET_OBJECT || cacheType == CacheEntryType.SET_SORTED; } @ConvertColumn(ignore = true) @@ -1675,7 +1794,7 @@ public final class CacheMemorySource extends AbstractCacheSource { return objectValue; } - public CopyOnWriteArraySet getCsetValue() { + public Set getCsetValue() { return csetValue; } diff --git a/src/main/java/org/redkale/source/CacheScoredValue.java b/src/main/java/org/redkale/source/CacheScoredValue.java new file mode 100644 index 000000000..9dc1ea3e8 --- /dev/null +++ b/src/main/java/org/redkale/source/CacheScoredValue.java @@ -0,0 +1,102 @@ +/* + * + */ +package org.redkale.source; + +import java.io.Serializable; +import java.util.Objects; +import org.redkale.convert.ConvertColumn; + +/** + * + * 有序集合的对象类 + * + *

+ * 详情见: https://redkale.org + * + * @author zhangjx + * @param 分数 + * + * @since 2.8.0 + */ +public interface CacheScoredValue extends Serializable, Comparable { + + public S getScore(); + + public String getValue(); + + public static NumberScoredValue create(Number score, String value) { + return new NumberScoredValue(score, value); + } + + public static final class NumberScoredValue implements CacheScoredValue { + + @ConvertColumn(index = 1) + private Number score; + + @ConvertColumn(index = 2) + private String value; + + public NumberScoredValue(Number score, String value) { + Objects.requireNonNull(score); + Objects.requireNonNull(value); + this.score = score; + this.value = value; + } + + public NumberScoredValue(CacheScoredValue scoredValue) { + this.score = scoredValue.getScore(); + this.value = scoredValue.getValue(); + } + + @Override + public Number getScore() { + return score; + } + + @Override + public String getValue() { + return value; + } + + public void setScore(Long score) { + this.score = score; + } + + public void setValue(String value) { + this.value = value; + } + + @Override + public int compareTo(CacheScoredValue o) { + return ((Comparable) this.score).compareTo((Number) o.getScore()); + } + + @Override + public int hashCode() { + return Objects.hashCode(this.value); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final NumberScoredValue other = (NumberScoredValue) obj; + return Objects.equals(this.value, other.value); + } + + @Override + public String toString() { + return "{score:" + score + ", value:" + value + "}"; + } + + } + +} diff --git a/src/main/java/org/redkale/source/CacheSource.java b/src/main/java/org/redkale/source/CacheSource.java index e4a43bb79..899064eb6 100644 --- a/src/main/java/org/redkale/source/CacheSource.java +++ b/src/main/java/org/redkale/source/CacheSource.java @@ -37,33 +37,33 @@ public interface CacheSource extends Resourcable { } //------------------------ get ------------------------ - default T get(final String key, final Type type) { + default T get(String key, Type type) { return (T) getAsync(key, type).join(); } - default String getString(final String key) { + default String getString(String key) { return get(key, String.class); } - default long getLong(final String key, long defValue) { + default long getLong(String key, long defValue) { Long val = get(key, Long.class); return val == null ? defValue : val; } //------------------------ mget ------------------------ - default Map mget(final Type componentType, final String... keys) { + default Map mget(Type componentType, String... keys) { return (Map) mgetAsync(componentType, keys).join(); } - default Map mgetString(final String... keys) { + default Map mgetString(String... keys) { return mget(String.class, keys); } - default Map mgetLong(final String... keys) { + default Map mgetLong(String... keys) { return mget(Long.class, keys); } - default T[] mgets(final Type componentType, final String... keys) { + default T[] mgets(Type componentType, String... keys) { T[] rs = (T[]) Creator.newArray(TypeToken.typeToClass(componentType), keys.length); Map map = mget(componentType, keys); for (int i = 0; i < keys.length; i++) { @@ -72,7 +72,7 @@ public interface CacheSource extends Resourcable { return rs; } - default String[] mgetsString(final String... keys) { + default String[] mgetsString(String... keys) { String[] rs = new String[keys.length]; Map map = mgetString(keys); for (int i = 0; i < keys.length; i++) { @@ -81,7 +81,7 @@ public interface CacheSource extends Resourcable { return rs; } - default Long[] mgetsLong(final String... keys) { + default Long[] mgetsLong(String... keys) { Long[] rs = new Long[keys.length]; Map map = mgetLong(keys); for (int i = 0; i < keys.length; i++) { @@ -91,124 +91,124 @@ public interface CacheSource extends Resourcable { } //------------------------ getex ------------------------ - default T getex(final String key, final int expireSeconds, final Type type) { + default T getex(String key, int expireSeconds, Type type) { return (T) getexAsync(key, expireSeconds, type).join(); } - default String getexString(final String key, final int expireSeconds) { + default String getexString(String key, int expireSeconds) { return getex(key, expireSeconds, String.class); } - default long getexLong(final String key, final int expireSeconds, long defValue) { + default long getexLong(String key, int expireSeconds, long defValue) { Long val = getex(key, expireSeconds, Long.class); return val == null ? defValue : val; } //------------------------ getset ------------------------ - default T getSet(final String key, final Convert convert, final Type type, final T value) { + default T getSet(String key, Convert convert, Type type, T value) { return getSetAsync(key, convert, type, value).join(); } - default T getSet(final String key, final Type type, final T value) { + default T getSet(String key, Type type, T value) { return getSet(key, (Convert) null, type, value); } - default String getSetString(final String key, final String value) { + default String getSetString(String key, String value) { return getSet(key, String.class, value); } - default long getSetLong(final String key, long value, long defValue) { + default long getSetLong(String key, long value, long defValue) { Long val = getSet(key, Long.class, value); return val == null ? defValue : val; } //------------------------ set ------------------------ //MSET key value [key value ...] - default void mset(final Serializable... keyVals) { + default void mset(Serializable... keyVals) { msetAsync(keyVals).join(); } - default void mset(final Map map) { + default void mset(Map map) { msetAsync(map).join(); } - default void set(final String key, final Convert convert, final Type type, final T value) { + default void set(String key, Convert convert, Type type, T value) { setAsync(key, convert, type, value).join(); } - default void set(final String key, final Type type, final T value) { + default void set(String key, Type type, T value) { set(key, (Convert) null, type, value); } - default void setString(final String key, final String value) { + default void setString(String key, String value) { set(key, String.class, value); } - default void setLong(final String key, final long value) { + default void setLong(String key, long value) { set(key, Long.class, value); } //------------------------ setnx ------------------------ - default boolean setnx(final String key, final Convert convert, final Type type, final T value) { + default boolean setnx(String key, Convert convert, Type type, T value) { return setnxAsync(key, convert, type, value).join(); } - default boolean setnx(final String key, final Type type, final T value) { + default boolean setnx(String key, Type type, T value) { return setnx(key, (Convert) null, type, value); } - default boolean setnxString(final String key, final String value) { + default boolean setnxString(String key, String value) { return setnx(key, String.class, value); } - default boolean setnxLong(final String key, final long value) { + default boolean setnxLong(String key, long value) { return setnx(key, Long.class, value); } //------------------------ setnxex ------------------------ - default boolean setnxex(final String key, final int expireSeconds, final Convert convert, final Type type, final T value) { + default boolean setnxex(String key, int expireSeconds, Convert convert, Type type, T value) { return setnxexAsync(key, expireSeconds, convert, type, value).join(); } - default boolean setnxex(final String key, final int expireSeconds, final Type type, final T value) { + default boolean setnxex(String key, int expireSeconds, Type type, T value) { return setnxex(key, expireSeconds, (Convert) null, type, value); } - default boolean setnxexString(final String key, final int expireSeconds, final String value) { + default boolean setnxexString(String key, int expireSeconds, String value) { return setnxex(key, expireSeconds, String.class, value); } - default boolean setnxexLong(final String key, final int expireSeconds, final long value) { + default boolean setnxexLong(String key, int expireSeconds, long value) { return setnxex(key, expireSeconds, Long.class, value); } //------------------------ setex ------------------------ - default void setex(final String key, final int expireSeconds, final Convert convert, final Type type, final T value) { + default void setex(String key, int expireSeconds, Convert convert, Type type, T value) { setexAsync(key, expireSeconds, convert, type, value).join(); } - default void setex(final String key, final int expireSeconds, final Type type, final T value) { + default void setex(String key, int expireSeconds, Type type, T value) { setex(key, expireSeconds, (Convert) null, type, value); } - default void setexString(final String key, final int expireSeconds, final String value) { + default void setexString(String key, int expireSeconds, String value) { setex(key, expireSeconds, String.class, value); } - default void setexLong(final String key, final int expireSeconds, final long value) { + default void setexLong(String key, int expireSeconds, long value) { setex(key, expireSeconds, Long.class, value); } //------------------------ xxxx ------------------------ - default boolean exists(final String key) { + default boolean exists(String key) { return existsAsync(key).join(); } - default void expire(final String key, final int expireSeconds) { + default void expire(String key, int expireSeconds) { expireAsync(key, expireSeconds).join(); } - default boolean persist(final String key) { + default boolean persist(String key) { return persistAsync(key).join(); } @@ -220,27 +220,27 @@ public interface CacheSource extends Resourcable { return renamenxAsync(oldKey, newKey).join(); } - default long del(final String... keys) { + default long del(String... keys) { return delAsync(keys).join(); } - default long incr(final String key) { + default long incr(String key) { return incrAsync(key).join(); } - default long incrby(final String key, long num) { + default long incrby(String key, long num) { return incrbyAsync(key, num).join(); } - default double incrbyFloat(final String key, double num) { + default double incrbyFloat(String key, double num) { return incrbyFloatAsync(key, num).join(); } - default long decr(final String key) { + default long decr(String key) { return decrAsync(key).join(); } - default long decrby(final String key, long num) { + default long decrby(String key, long num) { return decrbyAsync(key, num).join(); } @@ -279,460 +279,517 @@ public interface CacheSource extends Resourcable { } //------------------------ 哈希表 Hash ------------------------ - default long hdel(final String key, String... fields) { + default long hdel(String key, String... fields) { return hdelAsync(key, fields).join(); } - default List hkeys(final String key) { + default List hkeys(String key) { return hkeysAsync(key).join(); } - default long hlen(final String key) { + default long hlen(String key) { return hlenAsync(key).join(); } - default long hincr(final String key, String field) { + default long hincr(String key, String field) { return hincrAsync(key, field).join(); } - default long hincrby(final String key, String field, long num) { + default long hincrby(String key, String field, long num) { return hincrbyAsync(key, field, num).join(); } - default double hincrbyFloat(final String key, String field, double num) { + default double hincrbyFloat(String key, String field, double num) { return hincrbyFloatAsync(key, field, num).join(); } - default long hdecr(final String key, String field) { + default long hdecr(String key, String field) { return hdecrAsync(key, field).join(); } - default long hdecrby(final String key, String field, long num) { + default long hdecrby(String key, String field, long num) { return hdecrbyAsync(key, field, num).join(); } - default boolean hexists(final String key, String field) { + default boolean hexists(String key, String field) { return hexistsAsync(key, field).join(); } - default void hmset(final String key, final Serializable... values) { + default void hmset(String key, Serializable... values) { hmsetAsync(key, values).join(); } - default void hmset(final String key, final Map map) { + default void hmset(String key, Map map) { hmsetAsync(key, map).join(); } - default List hmget(final String key, final Type type, final String... fields) { + default List hmget(String key, Type type, String... fields) { return (List) hmgetAsync(key, type, fields).join(); } - default List hmgetString(final String key, final String... fields) { + default List hmgetString(String key, String... fields) { return hmget(key, String.class, fields); } - default List hmgetLong(final String key, final String... fields) { + default List hmgetLong(String key, String... fields) { return hmget(key, Long.class, fields); } - default Map hscan(final String key, final Type type, AtomicLong cursor, int limit, String pattern) { + default Map hscan(String key, Type type, AtomicLong cursor, int limit, String pattern) { return (Map) hscanAsync(key, type, cursor, limit, pattern).join(); } - default Map hscan(final String key, final Type type, AtomicLong cursor, int limit) { + default Map hscan(String key, Type type, AtomicLong cursor, int limit) { return hscan(key, type, cursor, limit, null); } - default T hget(final String key, final String field, final Type type) { + default T hget(String key, String field, Type type) { return (T) hgetAsync(key, field, type).join(); } - default String hgetString(final String key, final String field) { + default String hgetString(String key, String field) { return hget(key, field, String.class); } - default long hgetLong(final String key, final String field, long defValue) { + default long hgetLong(String key, String field, long defValue) { Long val = hget(key, field, Long.class); return val == null ? defValue : val; } - default void hset(final String key, final String field, final Convert convert, final Type type, final T value) { + default void hset(String key, String field, Convert convert, Type type, T value) { hsetAsync(key, field, convert, type, value).join(); } - default void hset(final String key, final String field, final Type type, final T value) { + default void hset(String key, String field, Type type, T value) { hset(key, field, (Convert) null, type, value); } - default void hsetString(final String key, final String field, final String value) { + default void hsetString(String key, String field, String value) { hset(key, field, String.class, value); } - default void hsetLong(final String key, final String field, final long value) { + default void hsetLong(String key, String field, long value) { hset(key, field, Long.class, value); } - default boolean hsetnx(final String key, final String field, final Convert convert, final Type type, final T value) { + default boolean hsetnx(String key, String field, Convert convert, Type type, T value) { return hsetnxAsync(key, field, convert, type, value).join(); } - default boolean hsetnx(final String key, final String field, final Type type, final T value) { + default boolean hsetnx(String key, String field, Type type, T value) { return hsetnx(key, field, (Convert) null, type, value); } - default boolean hsetnxString(final String key, final String field, final String value) { + default boolean hsetnxString(String key, String field, String value) { return hsetnx(key, field, String.class, value); } - default boolean hsetnxLong(final String key, final String field, final long value) { + default boolean hsetnxLong(String key, String field, long value) { return hsetnx(key, field, Long.class, value); } - default Map hgetall(final String key, final Type type) { + default Map hgetall(String key, Type type) { return (Map) hgetallAsync(key, type).join(); } - default Map hgetallString(final String key) { + default Map hgetallString(String key) { return hgetall(key, String.class); } - default Map hgetallLong(final String key) { + default Map hgetallLong(String key) { return hgetall(key, Long.class); } - default List hvals(final String key, final Type type) { + default List hvals(String key, Type type) { return (List) hvalsAsync(key, type).join(); } - default List hvalsString(final String key) { + default List hvalsString(String key) { return hvals(key, String.class); } - default List hvalsLong(final String key) { + default List hvalsLong(String key) { return hvals(key, Long.class); } //------------------------ 列表 List ------------------------ - default long llen(final String key) { + default long llen(String key) { return llenAsync(key).join(); } - default void ltrim(final String key, int start, int stop) { + default void ltrim(String key, int start, int stop) { ltrimAsync(key, start, stop).join(); } - default Map> lrange(final Type componentType, final String... keys) { + default Map> lrange(Type componentType, String... keys) { return (Map) lrangeAsync(componentType, keys).join(); } - default Map> lrangeString(final String... keys) { + default Map> lrangeString(String... keys) { return lrange(String.class, keys); } - default Map> lrangeLong(final String... keys) { + default Map> lrangeLong(String... keys) { return lrange(Long.class, keys); } - default List lrange(final String key, final Type componentType, int start, int stop) { + default List lrange(String key, Type componentType, int start, int stop) { return (List) lrangeAsync(key, componentType, start, stop).join(); } - default List lrangeString(final String key, int start, int stop) { + default List lrangeString(String key, int start, int stop) { return lrange(key, String.class, start, stop); } - default List lrangeLong(final String key, int start, int stop) { + default List lrangeLong(String key, int start, int stop) { return lrange(key, Long.class, start, stop); } - default List lrange(final String key, final Type componentType) { + default List lrange(String key, Type componentType) { return lrange(key, componentType, 0, -1); } - default List lrangeString(final String key) { + default List lrangeString(String key) { return lrange(key, String.class, 0, -1); } - default List lrangeLong(final String key) { + default List lrangeLong(String key) { return lrange(key, Long.class, 0, -1); } - default T lpop(final String key, final Type componentType) { + default T lpop(String key, Type componentType) { return (T) lpopAsync(key, componentType).join(); } - default String lpopString(final String key) { + default String lpopString(String key) { return lpop(key, String.class); } - default Long lpopLong(final String key) { + default Long lpopLong(String key) { return lpop(key, Long.class); } - default void lpush(final String key, final Type componentType, T... values) { + default void lpush(String key, Type componentType, T... values) { lpushAsync(key, componentType, values).join(); } - default void lpushString(final String key, String... values) { + default void lpushString(String key, String... values) { lpush(key, String.class, values); } - default void lpushLong(final String key, Long... values) { + default void lpushLong(String key, Long... values) { lpush(key, Long.class, values); } - default void lpushx(final String key, final Type componentType, T... values) { + default void lpushx(String key, Type componentType, T... values) { lpushxAsync(key, componentType, values).join(); } - default void lpushxString(final String key, String... values) { + default void lpushxString(String key, String... values) { lpushx(key, String.class, values); } - default void lpushxLong(final String key, Long... values) { + default void lpushxLong(String key, Long... values) { lpushx(key, Long.class, values); } - default void rpushx(final String key, final Type componentType, T... values) { + default void rpushx(String key, Type componentType, T... values) { rpushxAsync(key, componentType, values).join(); } - default void rpushxString(final String key, String... values) { + default void rpushxString(String key, String... values) { rpushx(key, String.class, values); } - default void rpushxLong(final String key, Long... values) { + default void rpushxLong(String key, Long... values) { rpushx(key, Long.class, values); } - default T rpop(final String key, final Type componentType) { + default T rpop(String key, Type componentType) { return (T) rpopAsync(key, componentType).join(); } - default String rpopString(final String key) { + default String rpopString(String key) { return rpop(key, String.class); } - default Long rpopLong(final String key) { + default Long rpopLong(String key) { return rpop(key, Long.class); } - default T rpoplpush(final String key, final String key2, final Type componentType) { + default T rpoplpush(String key, String key2, Type componentType) { return (T) rpoplpushAsync(key, key2, componentType).join(); } - default String rpoplpushString(final String key, final String key2) { + default String rpoplpushString(String key, String key2) { return rpoplpush(key, key2, String.class); } - default Long rpoplpushLong(final String key, final String key2) { + default Long rpoplpushLong(String key, String key2) { return rpoplpush(key, key2, Long.class); } - default int lrem(final String key, final Type componentType, final T value) { + default int lrem(String key, Type componentType, T value) { return lremAsync(key, componentType, value).join(); } - default int lremString(final String key, final String value) { + default int lremString(String key, String value) { return lrem(key, String.class, value); } - default int lremLong(final String key, final long value) { + default int lremLong(String key, long value) { return lrem(key, Long.class, value); } - default void rpush(final String key, final Type componentType, final T... values) { + default void rpush(String key, Type componentType, T... values) { rpushAsync(key, componentType, values).join(); } - default void rpushString(final String key, final String... values) { + default void rpushString(String key, String... values) { rpush(key, String.class, values); } - default void rpushLong(final String key, final Long... values) { + default void rpushLong(String key, Long... values) { rpush(key, Long.class, values); } //------------------------ 集合 Set ------------------------ - default void sadd(final String key, final Type componentType, final T... values) { + default void sadd(String key, Type componentType, T... values) { saddAsync(key, componentType, values).join(); } - default void saddString(final String key, final String... values) { + default void saddString(String key, String... values) { sadd(key, String.class, values); } - default void saddLong(final String key, final Long... values) { + default void saddLong(String key, Long... values) { sadd(key, Long.class, values); } - default Set sdiff(final String key, final Type componentType, final String... key2s) { + default Set sdiff(String key, Type componentType, String... key2s) { return (Set) sdiffAsync(key, componentType, key2s).join(); } - default Set sdiffString(final String key, final String... key2s) { + default Set sdiffString(String key, String... key2s) { return sdiff(key, String.class, key2s); } - default Set sdiffLong(final String key, final String... key2s) { + default Set sdiffLong(String key, String... key2s) { return sdiff(key, Long.class, key2s); } - default long sdiffstore(final String key, final String srcKey, final String... srcKey2s) { + default long sdiffstore(String key, String srcKey, String... srcKey2s) { return sdiffstoreAsync(key, srcKey, srcKey2s).join(); } - default Set sinter(final String key, final Type componentType, final String... key2s) { + default Set sinter(String key, Type componentType, String... key2s) { return (Set) sinterAsync(key, componentType, key2s).join(); } - default Set sinterString(final String key, final String... key2s) { + default Set sinterString(String key, String... key2s) { return sinter(key, String.class, key2s); } - default Set sinterLong(final String key, final String... key2s) { + default Set sinterLong(String key, String... key2s) { return sinter(key, Long.class, key2s); } - default long sinterstore(final String key, final String srcKey, final String... srcKey2s) { + default long sinterstore(String key, String srcKey, String... srcKey2s) { return sinterstoreAsync(key, srcKey, srcKey2s).join(); } - default long scard(final String key) { + default long scard(String key) { return scardAsync(key).join(); } - default Set smembers(final String key, final Type componentType) { + default Set smembers(String key, Type componentType) { return (Set) smembersAsync(key, componentType).join(); } - default Set smembersString(final String key) { + default Set smembersString(String key) { return smembers(key, String.class); } - default Set smembersLong(final String key) { + default Set smembersLong(String key) { return smembers(key, Long.class); } - default Map> smembers(final Type componentType, final String... keys) { + default Map> smembers(Type componentType, String... keys) { return (Map) smembersAsync(componentType, keys).join(); } - default Map> smembersString(final String... keys) { + default Map> smembersString(String... keys) { return smembers(String.class, keys); } - default Map> smembersLong(final String... keys) { + default Map> smembersLong(String... keys) { return smembers(Long.class, keys); } - default boolean sismember(final String key, final Type componentType, final T value) { + default boolean sismember(String key, Type componentType, T value) { return sismemberAsync(key, componentType, value).join(); } - default boolean sismemberString(final String key, final String value) { + default boolean sismemberString(String key, String value) { return sismember(key, String.class, value); } - default boolean sismemberLong(final String key, final long value) { + default boolean sismemberLong(String key, long value) { return sismember(key, Long.class, value); } - default boolean smismember(final String key, final String member) { + default boolean smismember(String key, String member) { List rs = smismembers(key, member); return rs.get(0); } - default List smismembers(final String key, final String... members) { + default List smismembers(String key, String... members) { return smismembersAsync(key, members).join(); } - default long srem(final String key, final Type componentType, final T... values) { + default long srem(String key, Type componentType, T... values) { return sremAsync(key, componentType, values).join(); } - default long sremString(final String key, final String... values) { + default long sremString(String key, String... values) { return srem(key, String.class, values); } - default long sremLong(final String key, final Long... values) { + default long sremLong(String key, Long... values) { return srem(key, Long.class, values); } - default T spop(final String key, final Type componentType) { + default T spop(String key, Type componentType) { return (T) spopAsync(key, componentType).join(); } - default String spopString(final String key) { + default String spopString(String key) { return spop(key, String.class); } - default Long spopLong(final String key) { + default Long spopLong(String key) { return spop(key, Long.class); } - default Set spop(final String key, final int count, final Type componentType) { + default Set spop(String key, int count, Type componentType) { return (Set) spopAsync(key, count, componentType).join(); } - default Set spopString(final String key, final int count) { + default Set spopString(String key, int count) { return spop(key, count, String.class); } - default Set spopLong(final String key, final int count) { + default Set spopLong(String key, int count) { return spop(key, count, Long.class); } - default Set sscan(final String key, final Type componentType, AtomicLong cursor, int limit, String pattern) { + default Set sscan(String key, Type componentType, AtomicLong cursor, int limit, String pattern) { return (Set) sscanAsync(key, componentType, cursor, limit, pattern).join(); } - default Set sscanString(final String key, AtomicLong cursor, int limit, String pattern) { + default Set sscanString(String key, AtomicLong cursor, int limit, String pattern) { return sscan(key, String.class, cursor, limit, pattern); } - default Set sscanLong(final String key, AtomicLong cursor, int limit, String pattern) { + default Set sscanLong(String key, AtomicLong cursor, int limit, String pattern) { return sscan(key, Long.class, cursor, limit, pattern); } - default Set sscan(final String key, final Type componentType, AtomicLong cursor, int limit) { + default Set sscan(String key, Type componentType, AtomicLong cursor, int limit) { return sscan(key, componentType, cursor, limit, null); } - default Set sscanString(final String key, AtomicLong cursor, int limit) { + default Set sscanString(String key, AtomicLong cursor, int limit) { return sscan(key, String.class, cursor, limit, null); } - default Set sscanLong(final String key, AtomicLong cursor, int limit) { + default Set sscanLong(String key, AtomicLong cursor, int limit) { return sscan(key, Long.class, cursor, limit, null); } + //------------------------ 有序集合 Sorted Set ------------------------ + default void zadd(String key, CacheScoredValue... values) { + zaddAsync(key, values).join(); + } + + default void zadd(String key, int score, String member) { + zadd(key, CacheScoredValue.create(score, member)); + } + + default void zadd(String key, long score, String member) { + zadd(key, CacheScoredValue.create(score, member)); + } + + default void zadd(String key, double score, String member) { + zadd(key, CacheScoredValue.create(score, member)); + } + + default long zrem(String key, String... members) { + return zremAsync(key, members).join(); + } + + default List zmscore(String key, Class scoreType, String... members) { + return zmscoreAsync(key, scoreType, members).join(); + } + + default List zmscoreInteger(String key, String... members) { + return zmscore(key, Integer.class, members); + } + + default List zmscoreLong(String key, String... members) { + return zmscore(key, Long.class, members); + } + + default List zmscoreDouble(String key, String... members) { + return zmscore(key, Double.class, members); + } + + default T zscore(String key, Class scoreType, String member) { + return zscoreAsync(key, scoreType, member).join(); + } + + default Integer zscoreInteger(String key, String member) { + return zscore(key, Integer.class, member); + } + + default Long zscoreLong(String key, String member) { + return zscore(key, Long.class, member); + } + + default Double zscoreDouble(String key, String member) { + return zscore(key, Double.class, member); + } + + default long zcard(String key) { + return zcardAsync(key).join(); + } + //---------------------- CompletableFuture 异步版 --------------------------------- public CompletableFuture isOpenAsync(); //------------------------ getAsync ------------------------ - public CompletableFuture getAsync(final String key, final Type type); + public CompletableFuture getAsync(String key, Type type); - default CompletableFuture getStringAsync(final String key) { + default CompletableFuture getStringAsync(String key) { return getAsync(key, String.class); } - default CompletableFuture getLongAsync(final String key, long defValue) { + default CompletableFuture getLongAsync(String key, long defValue) { return getAsync(key, Long.class).thenApply(v -> v == null ? defValue : (Long) v); } //------------------------ mgetAsync ------------------------ - public CompletableFuture> mgetAsync(final Type componentType, final String... keys); + public CompletableFuture> mgetAsync(Type componentType, String... keys); - default CompletableFuture> mgetStringAsync(final String... keys) { + default CompletableFuture> mgetStringAsync(String... keys) { return mgetAsync(String.class, keys); } - default CompletableFuture> mgetLongAsync(final String... keys) { + default CompletableFuture> mgetLongAsync(String... keys) { return mgetAsync(Long.class, keys); } - default CompletableFuture mgetsAsync(final Type componentType, final String... keys) { + default CompletableFuture mgetsAsync(Type componentType, String... keys) { return mgetAsync(componentType, keys).thenApply(map -> { T[] rs = (T[]) Creator.newArray(TypeToken.typeToClass(componentType), keys.length); for (int i = 0; i < keys.length; i++) { @@ -742,7 +799,7 @@ public interface CacheSource extends Resourcable { }); } - default CompletableFuture mgetsStringAsync(final String... keys) { + default CompletableFuture mgetsStringAsync(String... keys) { return mgetStringAsync(keys).thenApply(map -> { String[] rs = new String[keys.length]; for (int i = 0; i < keys.length; i++) { @@ -752,7 +809,7 @@ public interface CacheSource extends Resourcable { }); } - default CompletableFuture mgetsLongAsync(final String... keys) { + default CompletableFuture mgetsLongAsync(String... keys) { return mgetLongAsync(keys).thenApply(map -> { Long[] rs = new Long[keys.length]; for (int i = 0; i < keys.length; i++) { @@ -763,118 +820,118 @@ public interface CacheSource extends Resourcable { } //------------------------ getexAsync ------------------------ - public CompletableFuture getexAsync(final String key, final int expireSeconds, final Type type); + public CompletableFuture getexAsync(String key, int expireSeconds, Type type); - default CompletableFuture getexStringAsync(final String key, final int expireSeconds) { + default CompletableFuture getexStringAsync(String key, int expireSeconds) { return getexAsync(key, expireSeconds, String.class); } - default CompletableFuture getexLongAsync(final String key, final int expireSeconds, long defValue) { + default CompletableFuture getexLongAsync(String key, int expireSeconds, long defValue) { return getexAsync(key, expireSeconds, Long.class).thenApply(v -> v == null ? defValue : (Long) v); } //------------------------ getsetAsync ------------------------ - public CompletableFuture getSetAsync(final String key, final Convert convert, final Type type, final T value); + public CompletableFuture getSetAsync(String key, Convert convert, Type type, T value); - default CompletableFuture getSetAsync(final String key, final Type type, final T value) { + default CompletableFuture getSetAsync(String key, Type type, T value) { return getSetAsync(key, (Convert) null, type, value); } - default CompletableFuture getSetStringAsync(final String key, final String value) { + default CompletableFuture getSetStringAsync(String key, String value) { return getSetAsync(key, String.class, value); } - default CompletableFuture getSetLongAsync(final String key, long value, long defValue) { + default CompletableFuture getSetLongAsync(String key, long value, long defValue) { return getSetAsync(key, Long.class, value).thenApply(v -> v == null ? defValue : (Long) v); } //------------------------ setAsync ------------------------ //MSET key value [key value ...] - public CompletableFuture msetAsync(final Serializable... keyVals); + public CompletableFuture msetAsync(Serializable... keyVals); - public CompletableFuture msetAsync(final Map map); + public CompletableFuture msetAsync(Map map); - public CompletableFuture setAsync(final String key, final Convert convert, final Type type, final T value); + public CompletableFuture setAsync(String key, Convert convert, Type type, T value); - default CompletableFuture setAsync(final String key, final Type type, final T value) { + default CompletableFuture setAsync(String key, Type type, T value) { return setAsync(key, (Convert) null, type, value); } - default CompletableFuture setStringAsync(final String key, final String value) { + default CompletableFuture setStringAsync(String key, String value) { return setAsync(key, String.class, value); } - default CompletableFuture setLongAsync(final String key, long value) { + default CompletableFuture setLongAsync(String key, long value) { return setAsync(key, Long.class, value); } //------------------------ setnxAsync ------------------------ - public CompletableFuture setnxAsync(final String key, final Convert convert, final Type type, final T value); + public CompletableFuture setnxAsync(String key, Convert convert, Type type, T value); - default CompletableFuture setnxAsync(final String key, final Type type, final T value) { + default CompletableFuture setnxAsync(String key, Type type, T value) { return setnxAsync(key, (Convert) null, type, value); } - default CompletableFuture setnxStringAsync(final String key, final String value) { + default CompletableFuture setnxStringAsync(String key, String value) { return setnxAsync(key, String.class, value); } - default CompletableFuture setnxLongAsync(final String key, long value) { + default CompletableFuture setnxLongAsync(String key, long value) { return setnxAsync(key, Long.class, value); } //------------------------ setnxexAsync ------------------------ - public CompletableFuture setnxexAsync(final String key, final int expireSeconds, final Convert convert, final Type type, final T value); + public CompletableFuture setnxexAsync(String key, int expireSeconds, Convert convert, Type type, T value); - default CompletableFuture setnxexAsync(final String key, final int expireSeconds, final Type type, final T value) { + default CompletableFuture setnxexAsync(String key, int expireSeconds, Type type, T value) { return setnxexAsync(key, expireSeconds, (Convert) null, type, value); } - default CompletableFuture setnxexStringAsync(final String key, final int expireSeconds, final String value) { + default CompletableFuture setnxexStringAsync(String key, int expireSeconds, String value) { return setnxexAsync(key, expireSeconds, String.class, value); } - default CompletableFuture setnxexLongAsync(final String key, final int expireSeconds, final long value) { + default CompletableFuture setnxexLongAsync(String key, int expireSeconds, long value) { return setnxexAsync(key, expireSeconds, Long.class, value); } //------------------------ setexAsync ------------------------ - public CompletableFuture setexAsync(final String key, final int expireSeconds, final Convert convert, final Type type, final T value); + public CompletableFuture setexAsync(String key, int expireSeconds, Convert convert, Type type, T value); - default CompletableFuture setexAsync(final String key, final int expireSeconds, final Type type, final T value) { + default CompletableFuture setexAsync(String key, int expireSeconds, Type type, T value) { return setexAsync(key, expireSeconds, (Convert) null, type, value); } - default CompletableFuture setexStringAsync(final String key, final int expireSeconds, final String value) { + default CompletableFuture setexStringAsync(String key, int expireSeconds, String value) { return setexAsync(key, expireSeconds, String.class, value); } - default CompletableFuture setexLongAsync(final String key, final int expireSeconds, final long value) { + default CompletableFuture setexLongAsync(String key, int expireSeconds, long value) { return setexAsync(key, expireSeconds, Long.class, value); } //------------------------ xxxxAsync ------------------------ - public CompletableFuture existsAsync(final String key); + public CompletableFuture existsAsync(String key); - public CompletableFuture expireAsync(final String key, final int seconds); + public CompletableFuture expireAsync(String key, int seconds); - public CompletableFuture persistAsync(final String key); + public CompletableFuture persistAsync(String key); public CompletableFuture renameAsync(String oldKey, String newKey); public CompletableFuture renamenxAsync(String oldKey, String newKey); - public CompletableFuture delAsync(final String... keys); + public CompletableFuture delAsync(String... keys); - public CompletableFuture incrAsync(final String key); + public CompletableFuture incrAsync(String key); - public CompletableFuture incrbyAsync(final String key, long num); + public CompletableFuture incrbyAsync(String key, long num); - public CompletableFuture decrAsync(final String key); + public CompletableFuture decrAsync(String key); - public CompletableFuture decrbyAsync(final String key, long num); + public CompletableFuture decrbyAsync(String key, long num); - public CompletableFuture incrbyFloatAsync(final String key, double num); + public CompletableFuture incrbyFloatAsync(String key, double num); //------------------------ 键 Keys ------------------------ public CompletableFuture> keysAsync(String pattern); @@ -901,698 +958,776 @@ public interface CacheSource extends Resourcable { public CompletableFuture flushallAsync(); //------------------------ 哈希表 Hash ------------------------ - public CompletableFuture hgetAsync(final String key, final String field, final Type type); + public CompletableFuture hgetAsync(String key, String field, Type type); - default CompletableFuture hgetStringAsync(final String key, final String field) { + default CompletableFuture hgetStringAsync(String key, String field) { return hgetAsync(key, field, String.class); } - default CompletableFuture hgetLongAsync(final String key, final String field, long defValue) { + default CompletableFuture hgetLongAsync(String key, String field, long defValue) { return hgetAsync(key, field, Long.class).thenApply(v -> v == null ? defValue : (Long) v); } - public CompletableFuture hsetAsync(final String key, final String field, final Convert convert, final Type type, final T value); + public CompletableFuture hsetAsync(String key, String field, Convert convert, Type type, T value); - default CompletableFuture hsetAsync(final String key, final String field, final Type type, final T value) { + default CompletableFuture hsetAsync(String key, String field, Type type, T value) { return hsetAsync(key, field, (Convert) null, type, value); } - default CompletableFuture hsetStringAsync(final String key, final String field, final String value) { + default CompletableFuture hsetStringAsync(String key, String field, String value) { return hsetAsync(key, field, String.class, value); } - default CompletableFuture hsetLongAsync(final String key, final String field, final long value) { + default CompletableFuture hsetLongAsync(String key, String field, long value) { return hsetAsync(key, field, Long.class, value); } - public CompletableFuture hsetnxAsync(final String key, final String field, final Convert convert, final Type type, final T value); + public CompletableFuture hsetnxAsync(String key, String field, Convert convert, Type type, T value); - default CompletableFuture hsetnxAsync(final String key, final String field, final Type type, final T value) { + default CompletableFuture hsetnxAsync(String key, String field, Type type, T value) { return hsetnxAsync(key, field, (Convert) null, type, value); } - default CompletableFuture hsetnxStringAsync(final String key, final String field, final String value) { + default CompletableFuture hsetnxStringAsync(String key, String field, String value) { return hsetnxAsync(key, field, String.class, value); } - default CompletableFuture hsetnxLongAsync(final String key, final String field, final long value) { + default CompletableFuture hsetnxLongAsync(String key, String field, long value) { return hsetnxAsync(key, field, Long.class, value); } - public CompletableFuture> hgetallAsync(final String key, final Type type); + public CompletableFuture> hgetallAsync(String key, Type type); - default CompletableFuture> hgetallStringAsync(final String key) { + default CompletableFuture> hgetallStringAsync(String key) { return hgetallAsync(key, String.class); } - default CompletableFuture> hgetallLongAsync(final String key) { + default CompletableFuture> hgetallLongAsync(String key) { return hgetallAsync(key, Long.class); } - public CompletableFuture> hvalsAsync(final String key, final Type type); + public CompletableFuture> hvalsAsync(String key, Type type); - default CompletableFuture> hvalsStringAsync(final String key) { + default CompletableFuture> hvalsStringAsync(String key) { return hvalsAsync(key, String.class); } - default CompletableFuture> hvalsLongAsync(final String key) { + default CompletableFuture> hvalsLongAsync(String key) { return hvalsAsync(key, Long.class); } - public CompletableFuture hdelAsync(final String key, String... fields); + public CompletableFuture hdelAsync(String key, String... fields); - public CompletableFuture> hkeysAsync(final String key); + public CompletableFuture> hkeysAsync(String key); - public CompletableFuture hlenAsync(final String key); + public CompletableFuture hlenAsync(String key); - public CompletableFuture hincrAsync(final String key, String field); + public CompletableFuture hincrAsync(String key, String field); - public CompletableFuture hincrbyAsync(final String key, String field, long num); + public CompletableFuture hincrbyAsync(String key, String field, long num); - public CompletableFuture hincrbyFloatAsync(final String key, String field, double num); + public CompletableFuture hincrbyFloatAsync(String key, String field, double num); - public CompletableFuture hdecrAsync(final String key, String field); + public CompletableFuture hdecrAsync(String key, String field); - public CompletableFuture hdecrbyAsync(final String key, String field, long num); + public CompletableFuture hdecrbyAsync(String key, String field, long num); - public CompletableFuture hexistsAsync(final String key, String field); + public CompletableFuture hexistsAsync(String key, String field); - public CompletableFuture hmsetAsync(final String key, final Serializable... values); + public CompletableFuture hmsetAsync(String key, Serializable... values); - public CompletableFuture hmsetAsync(final String key, final Map map); + public CompletableFuture hmsetAsync(String key, Map map); - public CompletableFuture> hmgetAsync(final String key, final Type type, final String... fields); + public CompletableFuture> hmgetAsync(String key, Type type, String... fields); - default CompletableFuture> hmgetStringAsync(final String key, final String... fields) { + default CompletableFuture> hmgetStringAsync(String key, String... fields) { return hmgetAsync(key, String.class, fields); } - default CompletableFuture> hmgetLongAsync(final String key, final String... fields) { + default CompletableFuture> hmgetLongAsync(String key, String... fields) { return hmgetAsync(key, Long.class, fields); } - public CompletableFuture> hscanAsync(final String key, final Type type, AtomicLong cursor, int limit, String pattern); + public CompletableFuture> hscanAsync(String key, Type type, AtomicLong cursor, int limit, String pattern); - default CompletableFuture> hscanAsync(final String key, final Type type, AtomicLong cursor, int limit) { + default CompletableFuture> hscanAsync(String key, Type type, AtomicLong cursor, int limit) { return hscanAsync(key, type, cursor, limit, null); } //------------------------ 列表 List ------------------------ - public CompletableFuture llenAsync(final String key); + public CompletableFuture llenAsync(String key); - public CompletableFuture ltrimAsync(final String key, int start, int stop); + public CompletableFuture ltrimAsync(String key, int start, int stop); - public CompletableFuture>> lrangeAsync(final Type componentType, final String... keys); + public CompletableFuture>> lrangeAsync(Type componentType, String... keys); - default CompletableFuture>> lrangeStringAsync(final String... keys) { + default CompletableFuture>> lrangeStringAsync(String... keys) { return lrangeAsync(String.class, keys); } - default CompletableFuture>> lrangeLongAsync(final String... keys) { + default CompletableFuture>> lrangeLongAsync(String... keys) { return lrangeAsync(Long.class, keys); } - public CompletableFuture> lrangeAsync(final String key, final Type componentType, int start, int stop); + public CompletableFuture> lrangeAsync(String key, Type componentType, int start, int stop); - default CompletableFuture> lrangeStringAsync(final String key, int start, int stop) { + default CompletableFuture> lrangeStringAsync(String key, int start, int stop) { return lrangeAsync(key, String.class, start, stop); } - default CompletableFuture> lrangeLongAsync(final String key, int start, int stop) { + default CompletableFuture> lrangeLongAsync(String key, int start, int stop) { return lrangeAsync(key, Long.class, start, stop); } - default CompletableFuture> lrangeAsync(final String key, final Type componentType) { + default CompletableFuture> lrangeAsync(String key, Type componentType) { return lrangeAsync(key, componentType, 0, -1); } - default CompletableFuture> lrangeStringAsync(final String key) { + default CompletableFuture> lrangeStringAsync(String key) { return lrangeAsync(key, String.class, 0, -1); } - default CompletableFuture> lrangeLongAsync(final String key) { + default CompletableFuture> lrangeLongAsync(String key) { return lrangeAsync(key, Long.class, 0, -1); } - public CompletableFuture lpopAsync(final String key, final Type componentType); + public CompletableFuture lpopAsync(String key, Type componentType); - default CompletableFuture lpopStringAsync(final String key) { + default CompletableFuture lpopStringAsync(String key) { return lpopAsync(key, String.class); } - default CompletableFuture lpopLongAsync(final String key) { + default CompletableFuture lpopLongAsync(String key) { return lpopAsync(key, Long.class); } - public CompletableFuture lpushAsync(final String key, final Type componentType, T... values); + public CompletableFuture lpushAsync(String key, Type componentType, T... values); - default CompletableFuture lpushStringAsync(final String key, String... values) { + default CompletableFuture lpushStringAsync(String key, String... values) { return lpushAsync(key, String.class, values); } - default CompletableFuture lpushLongAsync(final String key, Long... values) { + default CompletableFuture lpushLongAsync(String key, Long... values) { return lpushAsync(key, Long.class, values); } - public CompletableFuture lpushxAsync(final String key, final Type componentType, T... values); + public CompletableFuture lpushxAsync(String key, Type componentType, T... values); - default CompletableFuture lpushxStringAsync(final String key, String... values) { + default CompletableFuture lpushxStringAsync(String key, String... values) { return lpushxAsync(key, String.class, values); } - default CompletableFuture lpushxLongAsync(final String key, Long... values) { + default CompletableFuture lpushxLongAsync(String key, Long... values) { return lpushxAsync(key, Long.class, values); } - public CompletableFuture rpushxAsync(final String key, final Type componentType, T... values); + public CompletableFuture rpushxAsync(String key, Type componentType, T... values); - default CompletableFuture rpushxStringAsync(final String key, String... values) { + default CompletableFuture rpushxStringAsync(String key, String... values) { return rpushxAsync(key, String.class, values); } - default CompletableFuture rpushxLongAsync(final String key, Long... values) { + default CompletableFuture rpushxLongAsync(String key, Long... values) { return rpushxAsync(key, Long.class, values); } - public CompletableFuture rpopAsync(final String key, final Type componentType); + public CompletableFuture rpopAsync(String key, Type componentType); - default CompletableFuture rpopStringAsync(final String key) { + default CompletableFuture rpopStringAsync(String key) { return rpopAsync(key, String.class); } - default CompletableFuture rpopLongAsync(final String key) { + default CompletableFuture rpopLongAsync(String key) { return rpopAsync(key, Long.class); } - public CompletableFuture rpoplpushAsync(final String key, final String key2, final Type componentType); + public CompletableFuture rpoplpushAsync(String key, String key2, Type componentType); - default CompletableFuture rpoplpushStringAsync(final String key, final String key2) { + default CompletableFuture rpoplpushStringAsync(String key, String key2) { return rpoplpushAsync(key, key2, String.class); } - default CompletableFuture rpoplpushLongAsync(final String key, final String key2) { + default CompletableFuture rpoplpushLongAsync(String key, String key2) { return rpoplpushAsync(key, key2, Long.class); } - public CompletableFuture lremAsync(final String key, final Type componentType, final T value); + public CompletableFuture lremAsync(String key, Type componentType, T value); - default CompletableFuture lremStringAsync(final String key, final String value) { + default CompletableFuture lremStringAsync(String key, String value) { return lremAsync(key, String.class, value); } - default CompletableFuture lremLongAsync(final String key, final long value) { + default CompletableFuture lremLongAsync(String key, long value) { return lremAsync(key, Long.class, value); } - public CompletableFuture rpushAsync(final String key, final Type componentType, final T... values); + public CompletableFuture rpushAsync(String key, Type componentType, T... values); - default CompletableFuture rpushStringAsync(final String key, final String... values) { + default CompletableFuture rpushStringAsync(String key, String... values) { return rpushAsync(key, String.class, values); } - default CompletableFuture rpushLongAsync(final String key, final Long... values) { + default CompletableFuture rpushLongAsync(String key, Long... values) { return rpushAsync(key, Long.class, values); } //------------------------ 集合 Set ------------------------ - public CompletableFuture saddAsync(final String key, final Type componentType, final T... values); + public CompletableFuture saddAsync(String key, Type componentType, T... values); - default CompletableFuture saddStringAsync(final String key, final String... values) { + default CompletableFuture saddStringAsync(String key, String... values) { return saddAsync(key, String.class, values); } - default CompletableFuture saddLongAsync(final String key, final Long... values) { + default CompletableFuture saddLongAsync(String key, Long... values) { return saddAsync(key, Long.class, values); } - public CompletableFuture> sdiffAsync(final String key, final Type componentType, final String... key2s); + public CompletableFuture> sdiffAsync(String key, Type componentType, String... key2s); - default CompletableFuture> sdiffStringAsync(final String key, final String... key2s) { + default CompletableFuture> sdiffStringAsync(String key, String... key2s) { return sdiffAsync(key, String.class, key2s); } - default CompletableFuture> sdiffLongAsync(final String key, final String... key2s) { + default CompletableFuture> sdiffLongAsync(String key, String... key2s) { return sdiffAsync(key, Long.class, key2s); } - public CompletableFuture sdiffstoreAsync(final String key, final String srcKey, final String... srcKey2s); + public CompletableFuture sdiffstoreAsync(String key, String srcKey, String... srcKey2s); - public CompletableFuture> sinterAsync(final String key, final Type componentType, final String... key2s); + public CompletableFuture> sinterAsync(String key, Type componentType, String... key2s); - default CompletableFuture> sinterStringAsync(final String key, final String... key2s) { + default CompletableFuture> sinterStringAsync(String key, String... key2s) { return sinterAsync(key, String.class, key2s); } - default CompletableFuture> sinterLongAsync(final String key, final String... key2s) { + default CompletableFuture> sinterLongAsync(String key, String... key2s) { return sinterAsync(key, Long.class, key2s); } - public CompletableFuture sinterstoreAsync(final String key, final String srcKey, final String... srcKey2s); + public CompletableFuture sinterstoreAsync(String key, String srcKey, String... srcKey2s); - public CompletableFuture scardAsync(final String key); + public CompletableFuture scardAsync(String key); - public CompletableFuture> smembersAsync(final String key, final Type componentType); + public CompletableFuture> smembersAsync(String key, Type componentType); - default CompletableFuture> smembersStringAsync(final String key) { + default CompletableFuture> smembersStringAsync(String key) { return smembersAsync(key, String.class); } - default CompletableFuture> smembersLongAsync(final String key) { + default CompletableFuture> smembersLongAsync(String key) { return smembersAsync(key, Long.class); } - public CompletableFuture>> smembersAsync(final Type componentType, final String... keys); + public CompletableFuture>> smembersAsync(Type componentType, String... keys); - default CompletableFuture>> smembersStringAsync(final String... keys) { + default CompletableFuture>> smembersStringAsync(String... keys) { return smembersAsync(String.class, keys); } - default CompletableFuture>> smembersLongAsync(final String... keys) { + default CompletableFuture>> smembersLongAsync(String... keys) { return smembersAsync(Long.class, keys); } - public CompletableFuture sismemberAsync(final String key, final Type componentType, final T value); + public CompletableFuture sismemberAsync(String key, Type componentType, T value); - default CompletableFuture sismemberStringAsync(final String key, final String value) { + default CompletableFuture sismemberStringAsync(String key, String value) { return sismemberAsync(key, String.class, value); } - default CompletableFuture sismemberLongAsync(final String key, final long value) { + default CompletableFuture sismemberLongAsync(String key, long value) { return sismemberAsync(key, Long.class, value); } - public CompletableFuture> smismembersAsync(final String key, final String... members); + public CompletableFuture> smismembersAsync(String key, String... members); - public CompletableFuture sremAsync(final String key, final Type componentType, final T... values); + public CompletableFuture sremAsync(String key, Type componentType, T... values); - default CompletableFuture sremStringAsync(final String key, final String... values) { + default CompletableFuture sremStringAsync(String key, String... values) { return sremAsync(key, String.class, values); } - default CompletableFuture sremLongAsync(final String key, final Long... values) { + default CompletableFuture sremLongAsync(String key, Long... values) { return sremAsync(key, Long.class, values); } - public CompletableFuture spopAsync(final String key, final Type componentType); + public CompletableFuture spopAsync(String key, Type componentType); - default CompletableFuture spopStringAsync(final String key) { + default CompletableFuture spopStringAsync(String key) { return spopAsync(key, String.class); } - default CompletableFuture spopLongAsync(final String key) { + default CompletableFuture spopLongAsync(String key) { return spopAsync(key, Long.class); } - public CompletableFuture> spopAsync(final String key, final int count, final Type componentType); + public CompletableFuture> spopAsync(String key, int count, Type componentType); - default CompletableFuture> spopStringAsync(final String key, final int count) { + default CompletableFuture> spopStringAsync(String key, int count) { return spopAsync(key, count, String.class); } - default CompletableFuture> spopLongAsync(final String key, final int count) { + default CompletableFuture> spopLongAsync(String key, int count) { return spopAsync(key, count, Long.class); } - public CompletableFuture> sscanAsync(final String key, final Type componentType, AtomicLong cursor, int limit, String pattern); + public CompletableFuture> sscanAsync(String key, Type componentType, AtomicLong cursor, int limit, String pattern); - default CompletableFuture> sscanStringAsync(final String key, AtomicLong cursor, int limit, String pattern) { + default CompletableFuture> sscanStringAsync(String key, AtomicLong cursor, int limit, String pattern) { return sscanAsync(key, String.class, cursor, limit, pattern); } - default CompletableFuture> sscanLongAsync(final String key, AtomicLong cursor, int limit, String pattern) { + default CompletableFuture> sscanLongAsync(String key, AtomicLong cursor, int limit, String pattern) { return sscanAsync(key, Long.class, cursor, limit, pattern); } - default CompletableFuture> sscanAsync(final String key, final Type componentType, AtomicLong cursor, int limit) { + default CompletableFuture> sscanAsync(String key, Type componentType, AtomicLong cursor, int limit) { return sscanAsync(key, componentType, cursor, limit, null); } - default CompletableFuture> sscanStringAsync(final String key, AtomicLong cursor, int limit) { + default CompletableFuture> sscanStringAsync(String key, AtomicLong cursor, int limit) { return sscanAsync(key, String.class, cursor, limit); } - default CompletableFuture> sscanLongAsync(final String key, AtomicLong cursor, int limit) { + default CompletableFuture> sscanLongAsync(String key, AtomicLong cursor, int limit) { return sscanAsync(key, Long.class, cursor, limit); } + //------------------------ 有序集合 Sorted Set ------------------------ + public CompletableFuture zaddAsync(String key, CacheScoredValue... values); + + default CompletableFuture zaddAsync(String key, int score, String member) { + return zaddAsync(key, CacheScoredValue.create(score, member)); + } + + default CompletableFuture zaddAsync(String key, long score, String member) { + return zaddAsync(key, CacheScoredValue.create(score, member)); + } + + default CompletableFuture zaddAsync(String key, double score, String member) { + return zaddAsync(key, CacheScoredValue.create(score, member)); + } + + public CompletableFuture zremAsync(String key, String... members); + + public CompletableFuture> zmscoreAsync(String key, Class scoreType, String... members); + + public CompletableFuture zscoreAsync(String key, Class scoreType, String member); + + default CompletableFuture> zmscoreIntegerAsync(String key, String... members) { + return zmscoreAsync(key, Integer.class, members); + } + + default CompletableFuture> zmscoreLongAsync(String key, String... members) { + return zmscoreAsync(key, Long.class, members); + } + + default CompletableFuture> zmscoreDoubleAsync(String key, String... members) { + return zmscoreAsync(key, Double.class, members); + } + + default CompletableFuture zscoreIntegerAsync(String key, String member) { + return zscoreAsync(key, Integer.class, member); + } + + default CompletableFuture zscoreLongAsync(String key, String member) { + return zscoreAsync(key, Long.class, member); + } + + default CompletableFuture zscoreDoubleAsync(String key, String member) { + return zscoreAsync(key, Double.class, member); + } + + public CompletableFuture zcardAsync(String key); +// +// public CompletableFuture zcountAsync(String key, Range range); +// +// default CompletableFuture zcountAsync(String key, long min, long max) { +// return zcountAsync(key, new Range.LongRange(min, max)); +// } +// +// default CompletableFuture zcountAsync(String key, double min, double max) { +// return zcountAsync(key, new Range.DoubleRange(min, max)); +// } +// +// public CompletableFuture> zdiffAsync(String key, int numkeys, boolean withScores, String... key2s); +// +// public CompletableFuture zdiffstoreAsync(String key, int numkeys, String srcKey, String... srcKey2s); +// +// public CompletableFuture> zinterAsync(String key, int numkeys, boolean withScores, String... key2s); +// +// public CompletableFuture zinterstoreAsync(String key, int numkeys, String srcKey, String... srcKey2s); +// + +// +// public CompletableFuture zrankAsync(String key, String member, boolean withScore); +// +// default CompletableFuture zrankAsync(String key, String member) { +// return zrankAsync(key, member, false); +// } +// +// public CompletableFuture> zscanAsync(String key, Type componentType, AtomicLong cursor, int limit, String pattern); +// +// default CompletableFuture> zscanAsync(String key, Type componentType, AtomicLong cursor, int limit) { +// return zscanAsync(key, componentType, cursor, limit, null); +// } //-------------------------- 过期方法 ---------------------------------- @Deprecated(since = "2.8.0") - public CompletableFuture> getCollectionAsync(final String key, final Type componentType); + public CompletableFuture> getCollectionAsync(String key, Type componentType); @Deprecated(since = "2.8.0") - public CompletableFuture>> getCollectionMapAsync(final boolean set, final Type componentType, final String... keys); + public CompletableFuture>> getCollectionMapAsync(boolean set, Type componentType, String... keys); @Deprecated(since = "2.8.0") - public CompletableFuture getCollectionSizeAsync(final String key); + public CompletableFuture getCollectionSizeAsync(String key); @Deprecated(since = "2.8.0") - public CompletableFuture> getexCollectionAsync(final String key, final int expireSeconds, final Type componentType); + public CompletableFuture> getexCollectionAsync(String key, int expireSeconds, Type componentType); @Deprecated(since = "2.8.0") - public CompletableFuture> getStringCollectionAsync(final String key); + public CompletableFuture> getStringCollectionAsync(String key); @Deprecated(since = "2.8.0") - public CompletableFuture>> getStringCollectionMapAsync(final boolean set, final String... keys); + public CompletableFuture>> getStringCollectionMapAsync(boolean set, String... keys); @Deprecated(since = "2.8.0") - public CompletableFuture> getexStringCollectionAsync(final String key, final int expireSeconds); + public CompletableFuture> getexStringCollectionAsync(String key, int expireSeconds); @Deprecated(since = "2.8.0") - public CompletableFuture> getLongCollectionAsync(final String key); + public CompletableFuture> getLongCollectionAsync(String key); @Deprecated(since = "2.8.0") - public CompletableFuture>> getLongCollectionMapAsync(final boolean set, final String... keys); + public CompletableFuture>> getLongCollectionMapAsync(boolean set, String... keys); @Deprecated(since = "2.8.0") - public CompletableFuture> getexLongCollectionAsync(final String key, final int expireSeconds); + public CompletableFuture> getexLongCollectionAsync(String key, int expireSeconds); @Deprecated(since = "2.8.0") - default CompletableFuture refreshAsync(final String key, final int expireSeconds) { + default CompletableFuture refreshAsync(String key, int expireSeconds) { return expireAsync(key, expireSeconds); } @Deprecated(since = "2.8.0") - default CompletableFuture hremoveAsync(final String key, String... fields) { + default CompletableFuture hremoveAsync(String key, String... fields) { return hdelAsync(key, fields).thenApply(v -> v.intValue()); } @Deprecated(since = "2.8.0") - default CompletableFuture setAsync(final int expireSeconds, final String key, final Convert convert, final T value) { + default CompletableFuture setAsync(int expireSeconds, String key, Convert convert, T value) { return setexAsync(key, expireSeconds, convert, value.getClass(), value); } @Deprecated(since = "2.8.0") - default CompletableFuture setAsync(final int expireSeconds, final String key, final Type type, final T value) { + default CompletableFuture setAsync(int expireSeconds, String key, Type type, T value) { return setexAsync(key, expireSeconds, type, value); } @Deprecated(since = "2.8.0") - default CompletableFuture setAsync(final int expireSeconds, final String key, final Convert convert, final Type type, final T value) { + default CompletableFuture setAsync(int expireSeconds, String key, Convert convert, Type type, T value) { return setexAsync(key, expireSeconds, convert, type, value); } @Deprecated(since = "2.8.0") - default CompletableFuture setExpireSecondsAsync(final String key, final int expireSeconds) { + default CompletableFuture setExpireSecondsAsync(String key, int expireSeconds) { return expireAsync(key, expireSeconds); } @Deprecated(since = "2.8.0") - default CompletableFuture removeAsync(final String key) { + default CompletableFuture removeAsync(String key) { return delAsync(key).thenApply(v -> v.intValue()); } @Deprecated(since = "2.8.0") - default int hremove(final String key, String... fields) { + default int hremove(String key, String... fields) { return (int) hdel(key, fields); } @Deprecated(since = "2.8.0") - default void refresh(final String key, final int expireSeconds) { + default void refresh(String key, int expireSeconds) { expire(key, expireSeconds); } @Deprecated(since = "2.8.0") - default void set(final int expireSeconds, final String key, final Convert convert, final T value) { + default void set(int expireSeconds, String key, Convert convert, T value) { setex(key, expireSeconds, convert, value.getClass(), value); } @Deprecated(since = "2.8.0") - default void set(final int expireSeconds, final String key, final Type type, final T value) { + default void set(int expireSeconds, String key, Type type, T value) { setex(key, expireSeconds, type, value); } @Deprecated(since = "2.8.0") - default void set(final int expireSeconds, final String key, final Convert convert, final Type type, final T value) { + default void set(int expireSeconds, String key, Convert convert, Type type, T value) { setex(key, expireSeconds, convert, type, value); } @Deprecated(since = "2.8.0") - default void setExpireSeconds(final String key, final int expireSeconds) { + default void setExpireSeconds(String key, int expireSeconds) { expire(key, expireSeconds); } @Deprecated(since = "2.8.0") - default int remove(final String key) { + default int remove(String key) { return (int) del(key); } @Deprecated(since = "2.8.0") - default void setString(final int expireSeconds, final String key, final String value) { + default void setString(int expireSeconds, String key, String value) { setexString(key, expireSeconds, value); } @Deprecated(since = "2.8.0") - default void setLong(final int expireSeconds, final String key, final long value) { + default void setLong(int expireSeconds, String key, long value) { setexLong(key, expireSeconds, value); } @Deprecated(since = "2.8.0") - default CompletableFuture getAndRefreshAsync(final String key, final int expireSeconds, final Type type) { + default CompletableFuture getAndRefreshAsync(String key, int expireSeconds, Type type) { return getexAsync(key, expireSeconds, type); } @Deprecated(since = "2.8.0") - default T getAndRefresh(final String key, final int expireSeconds, final Type type) { + default T getAndRefresh(String key, int expireSeconds, Type type) { return getex(key, expireSeconds, type); } @Deprecated(since = "2.8.0") - default String getStringAndRefresh(final String key, final int expireSeconds) { + default String getStringAndRefresh(String key, int expireSeconds) { return getexString(key, expireSeconds); } @Deprecated(since = "2.8.0") - default long getLongAndRefresh(final String key, final int expireSeconds, long defValue) { + default long getLongAndRefresh(String key, int expireSeconds, long defValue) { return getexLong(key, expireSeconds, defValue); } @Deprecated(since = "2.8.0") - default CompletableFuture getLongAndRefreshAsync(final String key, final int expireSeconds, long defValue) { + default CompletableFuture getLongAndRefreshAsync(String key, int expireSeconds, long defValue) { return getexLongAsync(key, expireSeconds, defValue); } @Deprecated(since = "2.8.0") - default CompletableFuture getStringAndRefreshAsync(final String key, final int expireSeconds) { + default CompletableFuture getStringAndRefreshAsync(String key, int expireSeconds) { return getexStringAsync(key, expireSeconds); } @Deprecated(since = "2.8.0") - default int hsize(final String key) { + default int hsize(String key) { return (int) hlen(key); } @Deprecated(since = "2.8.0") - default CompletableFuture hsizeAsync(final String key) { + default CompletableFuture hsizeAsync(String key) { return hlenAsync(key).thenApply(v -> v.intValue()); } @Deprecated(since = "2.8.0") - default void appendSetItem(final String key, final Type componentType, final T value) { + default void appendSetItem(String key, Type componentType, T value) { sadd(key, componentType, value); } @Deprecated(since = "2.8.0") - default int removeSetItem(final String key, final Type componentType, final T value) { + default int removeSetItem(String key, Type componentType, T value) { return (int) srem(key, componentType, value); } @Deprecated(since = "2.8.0") - default T spopSetItem(final String key, final Type componentType) { + default T spopSetItem(String key, Type componentType) { return CacheSource.this.spop(key, componentType); } @Deprecated(since = "2.8.0") - default Set spopSetItem(final String key, final int count, final Type componentType) { + default Set spopSetItem(String key, int count, Type componentType) { return spop(key, count, componentType); } @Deprecated(since = "2.8.0") - default boolean existsSetItem(final String key, final Type componentType, final T value) { + default boolean existsSetItem(String key, Type componentType, T value) { return sismember(key, componentType, value); } @Deprecated(since = "2.8.0") - default CompletableFuture existsSetItemAsync(final String key, final Type componentType, final T value) { + default CompletableFuture existsSetItemAsync(String key, Type componentType, T value) { return sismemberAsync(key, componentType, value); } @Deprecated(since = "2.8.0") - default CompletableFuture appendSetItemAsync(final String key, final Type componentType, final T value) { + default CompletableFuture appendSetItemAsync(String key, Type componentType, T value) { return saddAsync(key, componentType, value); } @Deprecated(since = "2.8.0") - default CompletableFuture removeSetItemAsync(final String key, final Type componentType, final T value) { + default CompletableFuture removeSetItemAsync(String key, Type componentType, T value) { return sremAsync(key, componentType, value).thenApply(v -> v.intValue()); } @Deprecated(since = "2.8.0") - default CompletableFuture spopSetItemAsync(final String key, final Type componentType) { + default CompletableFuture spopSetItemAsync(String key, Type componentType) { return spopAsync(key, componentType); } @Deprecated(since = "2.8.0") - default CompletableFuture> spopSetItemAsync(final String key, final int count, final Type componentType) { + default CompletableFuture> spopSetItemAsync(String key, int count, Type componentType) { return spopAsync(key, count, componentType); } @Deprecated(since = "2.8.0") - default boolean existsStringSetItem(final String key, final String value) { + default boolean existsStringSetItem(String key, String value) { return sismemberString(key, value); } @Deprecated(since = "2.8.0") - default void appendStringSetItem(final String key, final String value) { + default void appendStringSetItem(String key, String value) { saddString(key, value); } @Deprecated(since = "2.8.0") - default int removeStringSetItem(final String key, final String value) { + default int removeStringSetItem(String key, String value) { return (int) sremString(key, value); } @Deprecated(since = "2.8.0") - default String spopStringSetItem(final String key) { + default String spopStringSetItem(String key) { return spopString(key); } @Deprecated(since = "2.8.0") - default Set spopStringSetItem(final String key, final int count) { + default Set spopStringSetItem(String key, int count) { return spopString(key, count); } @Deprecated(since = "2.8.0") - default boolean existsLongSetItem(final String key, final long value) { + default boolean existsLongSetItem(String key, long value) { return sismemberLong(key, value); } @Deprecated(since = "2.8.0") - default void appendLongSetItem(final String key, final long value) { + default void appendLongSetItem(String key, long value) { saddLong(key, value); } @Deprecated(since = "2.8.0") - default int removeLongSetItem(final String key, final long value) { + default int removeLongSetItem(String key, long value) { return (int) sremLong(key, value); } @Deprecated(since = "2.8.0") - default Long spopLongSetItem(final String key) { + default Long spopLongSetItem(String key) { return spopLong(key); } @Deprecated(since = "2.8.0") - default Set spopLongSetItem(final String key, final int count) { + default Set spopLongSetItem(String key, int count) { return spopLong(key, count); } @Deprecated(since = "2.8.0") - default CompletableFuture existsStringSetItemAsync(final String key, final String value) { + default CompletableFuture existsStringSetItemAsync(String key, String value) { return sismemberStringAsync(key, value); } @Deprecated(since = "2.8.0") - default CompletableFuture appendStringSetItemAsync(final String key, final String value) { + default CompletableFuture appendStringSetItemAsync(String key, String value) { return saddStringAsync(key, value); } @Deprecated(since = "2.8.0") - default CompletableFuture removeStringSetItemAsync(final String key, final String value) { + default CompletableFuture removeStringSetItemAsync(String key, String value) { return sremStringAsync(key, value).thenApply(v -> v.intValue()); } @Deprecated(since = "2.8.0") - default CompletableFuture spopStringSetItemAsync(final String key) { + default CompletableFuture spopStringSetItemAsync(String key) { return spopStringAsync(key); } @Deprecated(since = "2.8.0") - default CompletableFuture> spopStringSetItemAsync(final String key, final int count) { + default CompletableFuture> spopStringSetItemAsync(String key, int count) { return spopStringAsync(key, count); } @Deprecated(since = "2.8.0") - default CompletableFuture existsLongSetItemAsync(final String key, final long value) { + default CompletableFuture existsLongSetItemAsync(String key, long value) { return sismemberLongAsync(key, value); } @Deprecated(since = "2.8.0") - default CompletableFuture appendLongSetItemAsync(final String key, final long value) { + default CompletableFuture appendLongSetItemAsync(String key, long value) { return saddLongAsync(key, value); } @Deprecated(since = "2.8.0") - default CompletableFuture removeLongSetItemAsync(final String key, final long value) { + default CompletableFuture removeLongSetItemAsync(String key, long value) { return sremLongAsync(key, value).thenApply(v -> v.intValue()); } @Deprecated(since = "2.8.0") - default CompletableFuture spopLongSetItemAsync(final String key) { + default CompletableFuture spopLongSetItemAsync(String key) { return spopLongAsync(key); } @Deprecated(since = "2.8.0") - default CompletableFuture> spopLongSetItemAsync(final String key, final int count) { + default CompletableFuture> spopLongSetItemAsync(String key, int count) { return spopLongAsync(key, count); } @Deprecated(since = "2.8.0") - default CompletableFuture appendListItemAsync(final String key, final Type componentType, final T value) { + default CompletableFuture appendListItemAsync(String key, Type componentType, T value) { return rpushAsync(key, componentType, value); } @Deprecated(since = "2.8.0") - default CompletableFuture removeListItemAsync(final String key, final Type componentType, final T value) { + default CompletableFuture removeListItemAsync(String key, Type componentType, T value) { return lremAsync(key, componentType, value); } @Deprecated(since = "2.8.0") - default CompletableFuture appendStringListItemAsync(final String key, final String value) { + default CompletableFuture appendStringListItemAsync(String key, String value) { return rpushStringAsync(key, value); } @Deprecated(since = "2.8.0") - default CompletableFuture removeStringListItemAsync(final String key, final String value) { + default CompletableFuture removeStringListItemAsync(String key, String value) { return lremStringAsync(key, value); } @Deprecated(since = "2.8.0") - default CompletableFuture appendLongListItemAsync(final String key, final long value) { + default CompletableFuture appendLongListItemAsync(String key, long value) { return rpushLongAsync(key, value); } @Deprecated(since = "2.8.0") - default CompletableFuture removeLongListItemAsync(final String key, final long value) { + default CompletableFuture removeLongListItemAsync(String key, long value) { return lremLongAsync(key, value); } @Deprecated(since = "2.8.0") - default void appendListItem(final String key, final Type componentType, final T value) { + default void appendListItem(String key, Type componentType, T value) { rpush(key, componentType, value); } @Deprecated(since = "2.8.0") - default int removeListItem(final String key, final Type componentType, final T value) { + default int removeListItem(String key, Type componentType, T value) { return lrem(key, componentType, value); } @Deprecated(since = "2.8.0") - default void appendStringListItem(final String key, final String value) { + default void appendStringListItem(String key, String value) { rpushString(key, value); } @Deprecated(since = "2.8.0") - default int removeStringListItem(final String key, final String value) { + default int removeStringListItem(String key, String value) { return lremString(key, value); } @Deprecated(since = "2.8.0") - default void appendLongListItem(final String key, final long value) { + default void appendLongListItem(String key, long value) { rpushLong(key, value); } @Deprecated(since = "2.8.0") - default int removeLongListItem(final String key, final long value) { + default int removeLongListItem(String key, long value) { return lremLong(key, value); } @@ -1627,62 +1762,62 @@ public interface CacheSource extends Resourcable { } @Deprecated(since = "2.8.0") - default Map getMap(final Type componentType, final String... keys) { + default Map getMap(Type componentType, String... keys) { return mget(componentType, keys); } @Deprecated(since = "2.8.0") - default Map getStringMap(final String... keys) { + default Map getStringMap(String... keys) { return mgetString(keys); } @Deprecated(since = "2.8.0") - default Map getLongMap(final String... keys) { + default Map getLongMap(String... keys) { return mgetLong(keys); } @Deprecated(since = "2.8.0") - default CompletableFuture> getMapAsync(final Type componentType, final String... keys) { + default CompletableFuture> getMapAsync(Type componentType, String... keys) { return mgetAsync(componentType, keys); } @Deprecated(since = "2.8.0") - default CompletableFuture> getStringMapAsync(final String... keys) { + default CompletableFuture> getStringMapAsync(String... keys) { return mgetStringAsync(keys); } @Deprecated(since = "2.8.0") - default CompletableFuture> getLongMapAsync(final String... keys) { + default CompletableFuture> getLongMapAsync(String... keys) { return mgetLongAsync(keys); } @Deprecated(since = "2.8.0") - default long incr(final String key, long num) { + default long incr(String key, long num) { return incrby(key, num); } @Deprecated(since = "2.8.0") - default long decr(final String key, long num) { + default long decr(String key, long num) { return decrby(key, num); } @Deprecated(since = "2.8.0") - default String[] getStringArray(final String... keys) { + default String[] getStringArray(String... keys) { return mgetsString(keys); } @Deprecated(since = "2.8.0") - default Long[] getLongArray(final String... keys) { + default Long[] getLongArray(String... keys) { return mgetsLong(keys); } @Deprecated(since = "2.8.0") - default CompletableFuture getStringArrayAsync(final String... keys) { + default CompletableFuture getStringArrayAsync(String... keys) { return mgetsStringAsync(keys); } @Deprecated(since = "2.8.0") - default CompletableFuture getLongArrayAsync(final String... keys) { + default CompletableFuture getLongArrayAsync(String... keys) { return mgetsLongAsync(keys); } @@ -1697,22 +1832,22 @@ public interface CacheSource extends Resourcable { } @Deprecated(since = "2.8.0") - default CompletableFuture> hmapAsync(final String key, final Type type, int start, int limit, String pattern) { + default CompletableFuture> hmapAsync(String key, Type type, int start, int limit, String pattern) { return hscanAsync(key, type, new AtomicLong(start), limit, pattern); } @Deprecated(since = "2.8.0") - default CompletableFuture> hmapAsync(final String key, final Type type, int start, int limit) { + default CompletableFuture> hmapAsync(String key, Type type, int start, int limit) { return hscanAsync(key, type, new AtomicLong(start), limit); } @Deprecated(since = "2.8.0") - default Map hmap(final String key, final Type type, int start, int limit, String pattern) { + default Map hmap(String key, Type type, int start, int limit, String pattern) { return hscan(key, type, new AtomicLong(start), limit, pattern); } @Deprecated(since = "2.8.0") - default Map hmap(final String key, final Type type, int start, int limit) { + default Map hmap(String key, Type type, int start, int limit) { return hscan(key, type, new AtomicLong(start), limit); } @@ -1722,12 +1857,12 @@ public interface CacheSource extends Resourcable { } @Deprecated(since = "2.8.0") - default Map> getStringCollectionMap(final boolean set, String... keys) { + default Map> getStringCollectionMap(boolean set, String... keys) { return getStringCollectionMapAsync(set, keys).join(); } @Deprecated(since = "2.8.0") - default Collection getCollection(String key, final Type componentType) { + default Collection getCollection(String key, Type componentType) { return (Collection) getCollectionAsync(key, componentType).join(); } @@ -1742,27 +1877,27 @@ public interface CacheSource extends Resourcable { } @Deprecated(since = "2.8.0") - default Map> getLongCollectionMap(final boolean set, String... keys) { + default Map> getLongCollectionMap(boolean set, String... keys) { return getLongCollectionMapAsync(set, keys).join(); } @Deprecated(since = "2.8.0") - default Collection getexCollection(String key, final int expireSeconds, final Type componentType) { + default Collection getexCollection(String key, int expireSeconds, Type componentType) { return (Collection) getexCollectionAsync(key, expireSeconds, componentType).join(); } @Deprecated(since = "2.8.0") - default Collection getexStringCollection(String key, final int expireSeconds) { + default Collection getexStringCollection(String key, int expireSeconds) { return getexStringCollectionAsync(key, expireSeconds).join(); } @Deprecated(since = "2.8.0") - default Collection getexLongCollection(String key, final int expireSeconds) { + default Collection getexLongCollection(String key, int expireSeconds) { return getexLongCollectionAsync(key, expireSeconds).join(); } @Deprecated(since = "2.8.0") - default Map> getCollectionMap(final boolean set, final Type componentType, String... keys) { + default Map> getCollectionMap(boolean set, Type componentType, String... keys) { return (Map) getCollectionMapAsync(set, componentType, keys).join(); } }