From 6940b7af814f0ab69be72ace46978a528bcca628 Mon Sep 17 00:00:00 2001 From: Redkale Date: Fri, 23 Dec 2022 12:08:09 +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 | 59 +++++++++++++++ .../java/org/redkale/source/CacheSource.java | 72 +++++++++++++++---- .../org/redkale/util/ResourceFactory.java | 7 +- 3 files changed, 124 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index 7681de399..001848b13 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -991,6 +991,65 @@ public final class CacheMemorySource extends AbstractCacheSource { return CompletableFuture.supplyAsync(() -> getLongArray(keys), getExecutor()); } + @Override + public Map mget(final Type componentType, final String... keys) { + Map map = new LinkedHashMap<>(); + for (String key : keys) { + map.put(key, (T) get(key, componentType)); + } + return map; + } + + @Override + public Map mgetString(final String... keys) { + Map map = new LinkedHashMap<>(); + for (String key : keys) { + Object n = get(key, String.class); + map.put(key, n == null ? null : n.toString()); + } + return map; + } + + @Override + public Map mgetLong(final String... keys) { + Map map = new LinkedHashMap<>(); + for (String key : keys) { + Number n = (Number) get(key, long.class); + map.put(key, n == null ? null : n.longValue()); + } + return map; + } + + @Override + public Map mgetBytes(final String... keys) { + Map map = new LinkedHashMap<>(); + for (String key : keys) { + byte[] n = get(key, byte[].class); + map.put(key, get(key, byte[].class)); + } + return map; + } + + @Override + public CompletableFuture> mgetAsync(final Type componentType, final String... keys) { + return CompletableFuture.completedFuture(mget(componentType, keys)); + } + + @Override + public CompletableFuture> mgetStringAsync(final String... keys) { + return CompletableFuture.completedFuture(mgetString(keys)); + } + + @Override + public CompletableFuture> mgetLongAsync(final String... keys) { + return CompletableFuture.completedFuture(mgetLong(keys)); + } + + @Override + public CompletableFuture> mgetBytesAsync(final String... keys) { + return CompletableFuture.completedFuture(mgetBytes(keys)); + } + @Override public Map getStringMap(final String... keys) { Map map = new LinkedHashMap<>(); diff --git a/src/main/java/org/redkale/source/CacheSource.java b/src/main/java/org/redkale/source/CacheSource.java index cf6e10d46..e16ca04ef 100644 --- a/src/main/java/org/redkale/source/CacheSource.java +++ b/src/main/java/org/redkale/source/CacheSource.java @@ -43,6 +43,15 @@ public interface CacheSource extends Resourcable { public byte[] getBytes(final String key); + //------------------------ mget ------------------------ + public Map mget(final Type componentType, final String... keys); + + public Map mgetString(final String... keys); + + public Map mgetLong(final String... keys); + + public Map mgetBytes(final String... keys); + //------------------------ getex ------------------------ public T getex(final String key, final int expireSeconds, final Type type); @@ -190,6 +199,10 @@ public interface CacheSource extends Resourcable { public int lrem(final String key, final Type componentType, final T value); //---------- list-string ---------- + default List lrangeString(final String key) { + return lrange(key, String.class); + } + public void rpushString(final String key, final String value); public int lremString(final String key, final String value); @@ -217,6 +230,10 @@ public interface CacheSource extends Resourcable { public Set spop(final String key, final int count, final Type componentType); //---------- set-string ---------- + default Set smembersString(final String key) { + return smembers(key, String.class); + } + public boolean sismemberString(final String key, final String value); public void saddString(final String key, final String value); @@ -251,14 +268,8 @@ public interface CacheSource extends Resourcable { public int getKeySize(); - public Map getMap(final Type componentType, final String... keys); - - public Map getStringMap(final String... keys); - public String[] getStringArray(final String... keys); - public Map getLongMap(final String... keys); - public Long[] getLongArray(final String... keys); //------------------------ collection ------------------------ @@ -306,6 +317,15 @@ public interface CacheSource extends Resourcable { public CompletableFuture getBytesAsync(final String key); + //------------------------ mgetAsync ------------------------ + public CompletableFuture> mgetAsync(final Type componentType, final String... keys); + + public CompletableFuture> mgetStringAsync(final String... keys); + + public CompletableFuture> mgetLongAsync(final String... keys); + + public CompletableFuture> mgetBytesAsync(final String... keys); + //------------------------ getexAsync ------------------------ public CompletableFuture getexAsync(final String key, final int expireSeconds, final Type type); @@ -480,6 +500,10 @@ public interface CacheSource extends Resourcable { public CompletableFuture> spopAsync(final String key, final int count, final Type componentType); //---------- set-string ---------- + default CompletableFuture> smembersStringAsync(final String key) { + return smembersAsync(key, String.class); + } + public CompletableFuture sismemberStringAsync(final String key, final String value); public CompletableFuture saddStringAsync(final String key, final String value); @@ -512,16 +536,10 @@ public interface CacheSource extends Resourcable { public CompletableFuture> keysAsync(String pattern); - public CompletableFuture> getMapAsync(final Type componentType, final String... keys); - public CompletableFuture getKeySizeAsync(); - public CompletableFuture> getStringMapAsync(final String... keys); - public CompletableFuture getStringArrayAsync(final String... keys); - public CompletableFuture> getLongMapAsync(final String... keys); - public CompletableFuture getLongArrayAsync(final String... keys); //------------------------ collectionAsync ------------------------ @@ -930,4 +948,34 @@ public interface CacheSource extends Resourcable { default CompletableFuture> queryKeysEndsWithAsync(String endsWith) { return keysAsync("*" + endsWith); } + + @Deprecated + default Map getMap(final Type componentType, final String... keys) { + return mget(componentType, keys); + } + + @Deprecated + default Map getStringMap(final String... keys) { + return mgetString(keys); + } + + @Deprecated + default Map getLongMap(final String... keys) { + return mgetLong(keys); + } + + @Deprecated + default CompletableFuture> getMapAsync(final Type componentType, final String... keys) { + return mgetAsync(componentType, keys); + } + + @Deprecated + default CompletableFuture> getStringMapAsync(final String... keys) { + return mgetStringAsync(keys); + } + + @Deprecated + default CompletableFuture> getLongMapAsync(final String... keys) { + return mgetLongAsync(keys); + } } diff --git a/src/main/java/org/redkale/util/ResourceFactory.java b/src/main/java/org/redkale/util/ResourceFactory.java index 23eb0df34..f252c9858 100644 --- a/src/main/java/org/redkale/util/ResourceFactory.java +++ b/src/main/java/org/redkale/util/ResourceFactory.java @@ -748,7 +748,10 @@ public final class ResourceFactory { String presname = res1 == null ? (res2 == null ? srcResourceName : res2.name()) : res1.name(); if (presname == null) { if (srcObj instanceof Resourcable) { - tname = tname.replace(RESOURCE_PARENT_NAME, ((Resourcable) srcObj).resourceName()); + String oname = ((Resourcable) srcObj).resourceName(); + if (oname != null) { + tname = tname.replace(RESOURCE_PARENT_NAME, oname); + } } else { logger.log(Level.SEVERE, srcObj.getClass().getName() + " not found @Resource on Class or not implements Resourcable"); } @@ -813,7 +816,7 @@ public final class ResourceFactory { } } } - if (rs == null && re == null && autoRegNull) { + if (rs == null && re == null && autoRegNull && rcname.indexOf('$') < 0) { register(rcname, gencType, null); //自动注入null的值 re = findEntry(rcname, gencType); }