diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index 2d6a32468..69293f1e7 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -1664,7 +1664,7 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public int getKeySize() { + public int dbsize() { return container.size(); } @@ -1699,7 +1699,7 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public CompletableFuture getKeySizeAsync() { + public CompletableFuture dbsizeAsync() { return CompletableFuture.completedFuture(container.size()); } diff --git a/src/main/java/org/redkale/source/CacheSource.java b/src/main/java/org/redkale/source/CacheSource.java index 712214409..32347a0fc 100644 --- a/src/main/java/org/redkale/source/CacheSource.java +++ b/src/main/java/org/redkale/source/CacheSource.java @@ -6,11 +6,11 @@ package org.redkale.source; import java.io.Serializable; -import java.lang.reflect.Type; +import java.lang.reflect.*; import java.util.*; import java.util.concurrent.CompletableFuture; import org.redkale.convert.Convert; -import org.redkale.util.Resourcable; +import org.redkale.util.*; /** * Redkale中缓存数据源的核心类。 主要供业务开发者使用, 技术开发者提供CacheSource的实现。
@@ -52,6 +52,42 @@ public interface CacheSource extends Resourcable { public Map mgetBytes(final String... keys); + default T[] mgets(final Type componentType, final String... keys) { + T[] rs = (T[]) Array.newInstance(TypeToken.typeToClass(componentType), keys.length); + Map map = mget(componentType, keys); + for (int i = 0; i < keys.length; i++) { + rs[i] = map.get(keys[i]); + } + return rs; + } + + default String[] mgetsString(final String... keys) { + String[] rs = new String[keys.length]; + Map map = mgetString(keys); + for (int i = 0; i < keys.length; i++) { + rs[i] = map.get(keys[i]); + } + return rs; + } + + default Long[] mgetsLong(final String... keys) { + Long[] rs = new Long[keys.length]; + Map map = mgetLong(keys); + for (int i = 0; i < keys.length; i++) { + rs[i] = map.get(keys[i]); + } + return rs; + } + + default byte[][] mgetsBytes(final String... keys) { + byte[][] rs = new byte[keys.length][]; + Map map = mgetBytes(keys); + for (int i = 0; i < keys.length; i++) { + rs[i] = map.get(keys[i]); + } + return rs; + } + //------------------------ getex ------------------------ public T getex(final String key, final int expireSeconds, final Type type); @@ -260,7 +296,7 @@ public interface CacheSource extends Resourcable { public Set spopLong(final String key, final int count); - //------------------------ other ------------------------ + //------------------------ keys ------------------------ default List keys() { return keys(null); } @@ -271,11 +307,7 @@ public interface CacheSource extends Resourcable { public List keys(String pattern); - public int getKeySize(); - - public String[] getStringArray(final String... keys); - - public Long[] getLongArray(final String... keys); + public int dbsize(); //------------------------ collection ------------------------ @Deprecated @@ -331,6 +363,46 @@ public interface CacheSource extends Resourcable { public CompletableFuture> mgetBytesAsync(final String... keys); + default CompletableFuture mgetsAsync(final Type componentType, final String... keys) { + return mgetAsync(componentType, keys).thenApply(map -> { + T[] rs = (T[]) Array.newInstance(TypeToken.typeToClass(componentType), keys.length); + for (int i = 0; i < keys.length; i++) { + rs[i] = (T) map.get(keys[i]); + } + return rs; + }); + } + + default CompletableFuture mgetsStringAsync(final String... keys) { + return mgetStringAsync(keys).thenApply(map -> { + String[] rs = new String[keys.length]; + for (int i = 0; i < keys.length; i++) { + rs[i] = map.get(keys[i]); + } + return rs; + }); + } + + default CompletableFuture mgetsLongAsync(final String... keys) { + return mgetLongAsync(keys).thenApply(map -> { + Long[] rs = new Long[keys.length]; + for (int i = 0; i < keys.length; i++) { + rs[i] = map.get(keys[i]); + } + return rs; + }); + } + + default CompletableFuture mgetsBytesAsync(final String... keys) { + return mgetBytesAsync(keys).thenApply(map -> { + byte[][] rs = new byte[keys.length][]; + for (int i = 0; i < keys.length; i++) { + rs[i] = map.get(keys[i]); + } + return rs; + }); + } + //------------------------ getexAsync ------------------------ public CompletableFuture getexAsync(final String key, final int expireSeconds, final Type type); @@ -535,7 +607,7 @@ public interface CacheSource extends Resourcable { public CompletableFuture> spopLongAsync(final String key, final int count); - //------------------------ other-Async ------------------------ + //------------------------ keys-Async ------------------------ default CompletableFuture> keysAsync() { return keysAsync(null); } @@ -546,11 +618,7 @@ public interface CacheSource extends Resourcable { public CompletableFuture> keysAsync(String pattern); - public CompletableFuture getKeySizeAsync(); - - public CompletableFuture getStringArrayAsync(final String... keys); - - public CompletableFuture getLongArrayAsync(final String... keys); + public CompletableFuture dbsizeAsync(); //------------------------ collectionAsync ------------------------ @Deprecated @@ -998,4 +1066,34 @@ public interface CacheSource extends Resourcable { default long decr(final String key, long num) { return decrby(key, num); } + + @Deprecated + default String[] getStringArray(final String... keys) { + return mgetsString(keys); + } + + @Deprecated + default Long[] getLongArray(final String... keys) { + return mgetsLong(keys); + } + + @Deprecated + default CompletableFuture getStringArrayAsync(final String... keys) { + return mgetsStringAsync(keys); + } + + @Deprecated + default CompletableFuture getLongArrayAsync(final String... keys) { + return mgetsLongAsync(keys); + } + + @Deprecated + default CompletableFuture getKeySizeAsync() { + return dbsizeAsync(); + } + + @Deprecated + default int getKeySize() { + return dbsize(); + } }