优化CacheSource

This commit is contained in:
Redkale
2022-12-23 12:08:09 +08:00
parent 31eb6f8701
commit 6940b7af81
3 changed files with 124 additions and 14 deletions

View File

@@ -991,6 +991,65 @@ public final class CacheMemorySource extends AbstractCacheSource {
return CompletableFuture.supplyAsync(() -> getLongArray(keys), getExecutor());
}
@Override
public <T> Map<String, T> mget(final Type componentType, final String... keys) {
Map<String, T> map = new LinkedHashMap<>();
for (String key : keys) {
map.put(key, (T) get(key, componentType));
}
return map;
}
@Override
public Map<String, String> mgetString(final String... keys) {
Map<String, String> 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<String, Long> mgetLong(final String... keys) {
Map<String, Long> 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<String, byte[]> mgetBytes(final String... keys) {
Map<String, byte[]> map = new LinkedHashMap<>();
for (String key : keys) {
byte[] n = get(key, byte[].class);
map.put(key, get(key, byte[].class));
}
return map;
}
@Override
public <T> CompletableFuture<Map<String, T>> mgetAsync(final Type componentType, final String... keys) {
return CompletableFuture.completedFuture(mget(componentType, keys));
}
@Override
public CompletableFuture<Map<String, String>> mgetStringAsync(final String... keys) {
return CompletableFuture.completedFuture(mgetString(keys));
}
@Override
public CompletableFuture<Map<String, Long>> mgetLongAsync(final String... keys) {
return CompletableFuture.completedFuture(mgetLong(keys));
}
@Override
public CompletableFuture<Map<String, byte[]>> mgetBytesAsync(final String... keys) {
return CompletableFuture.completedFuture(mgetBytes(keys));
}
@Override
public Map<String, String> getStringMap(final String... keys) {
Map<String, String> map = new LinkedHashMap<>();

View File

@@ -43,6 +43,15 @@ public interface CacheSource extends Resourcable {
public byte[] getBytes(final String key);
//------------------------ mget ------------------------
public <T> Map<String, T> mget(final Type componentType, final String... keys);
public Map<String, String> mgetString(final String... keys);
public Map<String, Long> mgetLong(final String... keys);
public Map<String, byte[]> mgetBytes(final String... keys);
//------------------------ getex ------------------------
public <T> T getex(final String key, final int expireSeconds, final Type type);
@@ -190,6 +199,10 @@ public interface CacheSource extends Resourcable {
public <T> int lrem(final String key, final Type componentType, final T value);
//---------- list-string ----------
default List<String> 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 <T> Set<T> spop(final String key, final int count, final Type componentType);
//---------- set-string ----------
default Set<String> 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 <T> Map<String, T> getMap(final Type componentType, final String... keys);
public Map<String, String> getStringMap(final String... keys);
public String[] getStringArray(final String... keys);
public Map<String, Long> getLongMap(final String... keys);
public Long[] getLongArray(final String... keys);
//------------------------ collection ------------------------
@@ -306,6 +317,15 @@ public interface CacheSource extends Resourcable {
public CompletableFuture<byte[]> getBytesAsync(final String key);
//------------------------ mgetAsync ------------------------
public <T> CompletableFuture<Map<String, T>> mgetAsync(final Type componentType, final String... keys);
public CompletableFuture<Map<String, String>> mgetStringAsync(final String... keys);
public CompletableFuture<Map<String, Long>> mgetLongAsync(final String... keys);
public CompletableFuture<Map<String, byte[]>> mgetBytesAsync(final String... keys);
//------------------------ getexAsync ------------------------
public <T> CompletableFuture<T> getexAsync(final String key, final int expireSeconds, final Type type);
@@ -480,6 +500,10 @@ public interface CacheSource extends Resourcable {
public <T> CompletableFuture<Set<T>> spopAsync(final String key, final int count, final Type componentType);
//---------- set-string ----------
default CompletableFuture<Set<String>> smembersStringAsync(final String key) {
return smembersAsync(key, String.class);
}
public CompletableFuture<Boolean> sismemberStringAsync(final String key, final String value);
public CompletableFuture<Void> saddStringAsync(final String key, final String value);
@@ -512,16 +536,10 @@ public interface CacheSource extends Resourcable {
public CompletableFuture<List<String>> keysAsync(String pattern);
public <T> CompletableFuture<Map<String, T>> getMapAsync(final Type componentType, final String... keys);
public CompletableFuture<Integer> getKeySizeAsync();
public CompletableFuture<Map<String, String>> getStringMapAsync(final String... keys);
public CompletableFuture<String[]> getStringArrayAsync(final String... keys);
public CompletableFuture<Map<String, Long>> getLongMapAsync(final String... keys);
public CompletableFuture<Long[]> getLongArrayAsync(final String... keys);
//------------------------ collectionAsync ------------------------
@@ -930,4 +948,34 @@ public interface CacheSource extends Resourcable {
default CompletableFuture<List<String>> queryKeysEndsWithAsync(String endsWith) {
return keysAsync("*" + endsWith);
}
@Deprecated
default <T> Map<String, T> getMap(final Type componentType, final String... keys) {
return mget(componentType, keys);
}
@Deprecated
default Map<String, String> getStringMap(final String... keys) {
return mgetString(keys);
}
@Deprecated
default Map<String, Long> getLongMap(final String... keys) {
return mgetLong(keys);
}
@Deprecated
default <T> CompletableFuture<Map<String, T>> getMapAsync(final Type componentType, final String... keys) {
return mgetAsync(componentType, keys);
}
@Deprecated
default CompletableFuture<Map<String, String>> getStringMapAsync(final String... keys) {
return mgetStringAsync(keys);
}
@Deprecated
default CompletableFuture<Map<String, Long>> getLongMapAsync(final String... keys) {
return mgetLongAsync(keys);
}
}

View File

@@ -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);
}