From 06d71bb2bc423afafb1b67cbc4cc64c86c2d78b6 Mon Sep 17 00:00:00 2001 From: redkale Date: Sat, 17 Jun 2023 23:01:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96CacheSource?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/redkale/source/CacheMemorySource.java | 15 +-- .../java/org/redkale/source/CacheSource.java | 120 +++++++----------- 2 files changed, 56 insertions(+), 79 deletions(-) diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index d55786362..eb887a652 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -947,7 +947,7 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public CompletableFuture>> lrangeAsync(final Type componentType, final String... keys) { + public CompletableFuture>> lrangesAsync(final Type componentType, final String... keys) { return supplyAsync(() -> { Map> map = new HashMap<>(); for (String key : keys) { @@ -961,22 +961,21 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public CompletableFuture> mgetAsync(final Type componentType, final String... keys) { + public CompletableFuture> mgetAsync(final Type componentType, final String... keys) { return supplyAsync(() -> { - Map map = new LinkedHashMap<>(); + List list = new ArrayList<>(); for (String key : keys) { Object v = get(key, componentType); if (v != null) { if (componentType == String.class) { - map.put(key, (T) v.toString()); + v = v.toString(); } else if (componentType == long.class || componentType == Long.class) { - map.put(key, (T) (Object) ((Number) v).longValue()); - } else { - map.put(key, (T) v); + v = (Object) ((Number) v).longValue(); } } + list.add((T) v); } - return map; + return list; }, getExecutor()); } diff --git a/src/main/java/org/redkale/source/CacheSource.java b/src/main/java/org/redkale/source/CacheSource.java index 4e57a40ea..d7744eb78 100644 --- a/src/main/java/org/redkale/source/CacheSource.java +++ b/src/main/java/org/redkale/source/CacheSource.java @@ -12,7 +12,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicLong; import org.redkale.annotation.Component; import org.redkale.convert.Convert; -import org.redkale.util.*; +import org.redkale.util.Resourcable; /** * Redkale中缓存数据源的核心类。 主要供业务开发者使用, 技术开发者提供CacheSource的实现。
@@ -149,43 +149,28 @@ public interface CacheSource extends Resourcable { } //------------------------ mget ------------------------ - default Map mget(Type componentType, String... keys) { - return (Map) mgetAsync(componentType, keys).join(); + default List mget(Type componentType, String... keys) { + return (List) mgetAsync(componentType, keys).join(); } - default Map mgetString(String... keys) { + default List mgetString(String... keys) { return mget(String.class, keys); } - default Map mgetLong(String... keys) { + default List mgetLong(String... keys) { return mget(Long.class, 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++) { - rs[i] = map.get(keys[i]); - } - return rs; + default Map mgets(Type componentType, String... keys) { + return (Map) mgetsAsync(componentType, keys).join(); } - default String[] mgetsString(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 Map mgetsString(String... keys) { + return mgets(String.class, keys); } - default Long[] mgetsLong(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 Map mgetsLong(String... keys) { + return mgets(Long.class, keys); } //------------------------ getex ------------------------ @@ -421,16 +406,16 @@ public interface CacheSource extends Resourcable { ltrimAsync(key, start, stop).join(); } - default Map> lrange(Type componentType, String... keys) { - return (Map) lrangeAsync(componentType, keys).join(); + default Map> lranges(Type componentType, String... keys) { + return (Map) lrangesAsync(componentType, keys).join(); } - default Map> lrangeString(String... keys) { - return lrange(String.class, keys); + default Map> lrangesString(String... keys) { + return lranges(String.class, keys); } - default Map> lrangeLong(String... keys) { - return lrange(Long.class, keys); + default Map> lrangesLong(String... keys) { + return lranges(Long.class, keys); } default List lrange(String key, Type componentType, int start, int stop) { @@ -915,44 +900,35 @@ public interface CacheSource extends Resourcable { } //------------------------ mget ------------------------ - public CompletableFuture> mgetAsync(Type componentType, String... keys); + public CompletableFuture> mgetAsync(Type componentType, String... keys); - default CompletableFuture> mgetStringAsync(String... keys) { + default CompletableFuture> mgetStringAsync(String... keys) { return mgetAsync(String.class, keys); } - default CompletableFuture> mgetLongAsync(String... keys) { + default CompletableFuture> mgetLongAsync(String... keys) { return mgetAsync(Long.class, keys); } - default CompletableFuture mgetsAsync(Type componentType, String... keys) { - return mgetAsync(componentType, keys).thenApply(map -> { - T[] rs = (T[]) Creator.newArray(TypeToken.typeToClass(componentType), keys.length); + default CompletableFuture> mgetsAsync(Type componentType, String... keys) { + return mgetAsync(componentType, keys).thenApply(list -> { + Map map = new LinkedHashMap<>(); for (int i = 0; i < keys.length; i++) { - rs[i] = (T) map.get(keys[i]); + T obj = (T) list.get(i); + if (obj != null) { + map.put(keys[i], obj); + } } - return rs; + return map; }); } - default CompletableFuture mgetsStringAsync(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> mgetsStringAsync(String... keys) { + return mgetsAsync(String.class, 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++) { - rs[i] = map.get(keys[i]); - } - return rs; - }); + default CompletableFuture> mgetsLongAsync(String... keys) { + return mgetsAsync(Long.class, keys); } //------------------------ getex ------------------------ @@ -1119,14 +1095,14 @@ public interface CacheSource extends Resourcable { public CompletableFuture ltrimAsync(String key, int start, int stop); - public CompletableFuture>> lrangeAsync(Type componentType, String... keys); + public CompletableFuture>> lrangesAsync(Type componentType, String... keys); - default CompletableFuture>> lrangeStringAsync(String... keys) { - return lrangeAsync(String.class, keys); + default CompletableFuture>> lrangesStringAsync(String... keys) { + return lrangesAsync(String.class, keys); } - default CompletableFuture>> lrangeLongAsync(String... keys) { - return lrangeAsync(Long.class, keys); + default CompletableFuture>> lrangesLongAsync(String... keys) { + return lrangesAsync(Long.class, keys); } public CompletableFuture> lrangeAsync(String key, Type componentType, int start, int stop); @@ -1862,32 +1838,32 @@ public interface CacheSource extends Resourcable { @Deprecated(since = "2.8.0") default Map getMap(Type componentType, String... keys) { - return mget(componentType, keys); + return mgets(componentType, keys); } @Deprecated(since = "2.8.0") default Map getStringMap(String... keys) { - return mgetString(keys); + return mgetsString(keys); } @Deprecated(since = "2.8.0") default Map getLongMap(String... keys) { - return mgetLong(keys); + return mgetsLong(keys); } @Deprecated(since = "2.8.0") default CompletableFuture> getMapAsync(Type componentType, String... keys) { - return mgetAsync(componentType, keys); + return mgetsAsync(componentType, keys); } @Deprecated(since = "2.8.0") default CompletableFuture> getStringMapAsync(String... keys) { - return mgetStringAsync(keys); + return mgetsStringAsync(keys); } @Deprecated(since = "2.8.0") default CompletableFuture> getLongMapAsync(String... keys) { - return mgetLongAsync(keys); + return mgetsLongAsync(keys); } @Deprecated(since = "2.8.0") @@ -1902,22 +1878,24 @@ public interface CacheSource extends Resourcable { @Deprecated(since = "2.8.0") default String[] getStringArray(String... keys) { - return mgetsString(keys); + List list = mgetString(keys); + return list.toArray(new String[list.size()]); } @Deprecated(since = "2.8.0") default Long[] getLongArray(String... keys) { - return mgetsLong(keys); + List list = mgetLong(keys); + return list.toArray(new Long[list.size()]); } @Deprecated(since = "2.8.0") default CompletableFuture getStringArrayAsync(String... keys) { - return mgetsStringAsync(keys); + return mgetStringAsync(keys).thenApply(list -> list.toArray(new String[list.size()])); } @Deprecated(since = "2.8.0") default CompletableFuture getLongArrayAsync(String... keys) { - return mgetsLongAsync(keys); + return mgetLongAsync(keys).thenApply(list -> list.toArray(new Long[list.size()])); } @Deprecated(since = "2.8.0")