From e44bfbe9f38a93856e7ffc3de2e85c7dd434eed4 Mon Sep 17 00:00:00 2001 From: Redkale Date: Fri, 23 Dec 2022 17:45:04 +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 | 28 +++++++++++++++++++ .../java/org/redkale/source/CacheSource.java | 8 ++++++ 2 files changed, 36 insertions(+) diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index 6146bf513..a05bb99b0 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -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 List 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 hmsetAsync(final String key, final Map map) { + return CompletableFuture.runAsync(() -> hmset(key, map), getExecutor()).whenComplete(futureCompleteConsumer); + } + @Override public CompletableFuture> 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 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 msetAsync(final Map map) { + return CompletableFuture.runAsync(() -> mset(map), getExecutor()).whenComplete(futureCompleteConsumer); + } + @Override public CompletableFuture setAsync(String key, Convert convert, T value) { return CompletableFuture.runAsync(() -> set(key, convert, value), getExecutor()).whenComplete(futureCompleteConsumer); diff --git a/src/main/java/org/redkale/source/CacheSource.java b/src/main/java/org/redkale/source/CacheSource.java index 82801a67d..5fdc0d0d5 100644 --- a/src/main/java/org/redkale/source/CacheSource.java +++ b/src/main/java/org/redkale/source/CacheSource.java @@ -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 void set(final String key, final Convert convert, final T value); public 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 List hmget(final String key, final Type type, final String... fields); public Map 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 msetAsync(final Object... keyVals); + public CompletableFuture msetAsync(final Map map); + public CompletableFuture setAsync(final String key, final Convert convert, final T value); public CompletableFuture setAsync(final String key, final Type type, final T value); @@ -461,6 +467,8 @@ public interface CacheSource extends Resourcable { //------------------------ hmxxAsync ------------------------ public CompletableFuture hmsetAsync(final String key, final Serializable... values); + public CompletableFuture hmsetAsync(final String key, final Map map); + public CompletableFuture> hmgetAsync(final String key, final Type type, final String... fields); public CompletableFuture> hmapAsync(final String key, final Type type, int offset, int limit);