优化CacheSource

This commit is contained in:
Redkale
2022-12-23 17:45:04 +08:00
parent 5750dd5dc3
commit e44bfbe9f3
2 changed files with 36 additions and 0 deletions

View File

@@ -278,6 +278,11 @@ public final class CacheMemorySource extends AbstractCacheSource {
}
}
@Override
public void hmset(final String key, final Map map) {
map.forEach((k, v) -> hset(CacheEntryType.MAP, key, (String) k, v));
}
@Override
public <T> List<T> hmget(final String key, final Type type, final String... fields) {
if (key == null) return null;
@@ -482,6 +487,11 @@ public final class CacheMemorySource extends AbstractCacheSource {
return CompletableFuture.runAsync(() -> hmset(key, values), getExecutor()).whenComplete(futureCompleteConsumer);
}
@Override
public CompletableFuture<Void> hmsetAsync(final String key, final Map map) {
return CompletableFuture.runAsync(() -> hmset(key, map), getExecutor()).whenComplete(futureCompleteConsumer);
}
@Override
public <T> CompletableFuture<List<T>> hmgetAsync(final String key, final Type type, final String... fields) {
return CompletableFuture.supplyAsync(() -> hmget(key, type, fields), getExecutor());
@@ -652,6 +662,19 @@ public final class CacheMemorySource extends AbstractCacheSource {
}
}
@Override
public void mset(Map map) {
map.forEach((key, val) -> {
if (val instanceof String) {
set(CacheEntryType.STRING, (String) key, val);
} else if (val instanceof Number) {
set(CacheEntryType.LONG, (String) key, ((Number) val).longValue());
} else {
set(CacheEntryType.OBJECT, (String) key, val);
}
});
}
@Override
public <T> void set(String key, Convert convert, T value) {
set(CacheEntryType.OBJECT, key, value);
@@ -721,6 +744,11 @@ public final class CacheMemorySource extends AbstractCacheSource {
return CompletableFuture.runAsync(() -> mset(keyVals), getExecutor()).whenComplete(futureCompleteConsumer);
}
@Override
public CompletableFuture<Void> msetAsync(final Map map) {
return CompletableFuture.runAsync(() -> mset(map), getExecutor()).whenComplete(futureCompleteConsumer);
}
@Override
public <T> CompletableFuture<Void> setAsync(String key, Convert convert, T value) {
return CompletableFuture.runAsync(() -> set(key, convert, value), getExecutor()).whenComplete(futureCompleteConsumer);

View File

@@ -76,6 +76,8 @@ public interface CacheSource extends Resourcable {
//MSET key value [key value ...]
public void mset(final Object... keyVals);
public void mset(final Map map);
public <T> void set(final String key, final Convert convert, final T value);
public <T> void set(final String key, final Type type, final T value);
@@ -184,6 +186,8 @@ public interface CacheSource extends Resourcable {
//------------------------ hmxx ------------------------
public void hmset(final String key, final Serializable... values);
public void hmset(final String key, final Map map);
public <T> List<T> hmget(final String key, final Type type, final String... fields);
public <T> Map<String, T> hmap(final String key, final Type type, int offset, int limit);
@@ -353,6 +357,8 @@ public interface CacheSource extends Resourcable {
//MSET key value [key value ...]
public CompletableFuture<Void> msetAsync(final Object... keyVals);
public CompletableFuture<Void> msetAsync(final Map map);
public <T> CompletableFuture<Void> setAsync(final String key, final Convert convert, final T value);
public <T> CompletableFuture<Void> setAsync(final String key, final Type type, final T value);
@@ -461,6 +467,8 @@ public interface CacheSource extends Resourcable {
//------------------------ hmxxAsync ------------------------
public CompletableFuture<Void> hmsetAsync(final String key, final Serializable... values);
public CompletableFuture<Void> hmsetAsync(final String key, final Map map);
public <T> CompletableFuture<List<T>> hmgetAsync(final String key, final Type type, final String... fields);
public <T> CompletableFuture<Map<String, T>> hmapAsync(final String key, final Type type, int offset, int limit);