From 5750dd5dc3c2f72fae885f4e2a6a541930ffda4b Mon Sep 17 00:00:00 2001 From: Redkale Date: Fri, 23 Dec 2022 14:00:44 +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 | 23 +++++++++++++++++++ .../java/org/redkale/source/CacheSource.java | 6 +++++ 2 files changed, 29 insertions(+) diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index 69cd5316b..6146bf513 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -634,6 +634,24 @@ public final class CacheMemorySource extends AbstractCacheSource { } } + @Override + public void mset(Object... keyVals) { + if (keyVals.length % 2 != 0) { + throw new RuntimeException("key value must be paired"); + } + for (int i = 0; i < keyVals.length; i += 2) { + String key = keyVals[i].toString(); + Object val = keyVals[i + 1]; + if (val instanceof String) { + set(CacheEntryType.STRING, key, val); + } else if (val instanceof Number) { + set(CacheEntryType.LONG, key, ((Number) val).longValue()); + } else { + set(CacheEntryType.OBJECT, key, val); + } + } + } + @Override public void set(String key, Convert convert, T value) { set(CacheEntryType.OBJECT, key, value); @@ -698,6 +716,11 @@ public final class CacheMemorySource extends AbstractCacheSource { setnx(CacheEntryType.LONG, key, value); } + @Override + public CompletableFuture msetAsync(final Object... keyVals) { + return CompletableFuture.runAsync(() -> mset(keyVals), 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 d494653fc..82801a67d 100644 --- a/src/main/java/org/redkale/source/CacheSource.java +++ b/src/main/java/org/redkale/source/CacheSource.java @@ -73,6 +73,9 @@ public interface CacheSource extends Resourcable { public byte[] getSetBytes(final String key, final byte[] value); //------------------------ set ------------------------ + //MSET key value [key value ...] + public void mset(final Object... keyVals); + public void set(final String key, final Convert convert, final T value); public void set(final String key, final Type type, final T value); @@ -347,6 +350,9 @@ public interface CacheSource extends Resourcable { public CompletableFuture getSetBytesAsync(final String key, final byte[] value); //------------------------ setAsync ------------------------ + //MSET key value [key value ...] + public CompletableFuture msetAsync(final Object... keyVals); + public CompletableFuture setAsync(final String key, final Convert convert, final T value); public CompletableFuture setAsync(final String key, final Type type, final T value);