From 222969e8a305090676dee61633e849984f23502c Mon Sep 17 00:00:00 2001 From: redkale Date: Sat, 15 Jul 2023 22:06:51 +0800 Subject: [PATCH] =?UTF-8?q?CacheSource=E5=A2=9E=E5=8A=A0getDel=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/redkale/source/CacheMemorySource.java | 7 ++++++ .../java/org/redkale/source/CacheSource.java | 25 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index 7300ed7e8..c427c1076 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -661,6 +661,13 @@ public final class CacheMemorySource extends AbstractCacheSource { }, getExecutor()); } + @Override + public CompletableFuture getDelAsync(String key, Type type) { + return supplyAsync(() -> { + return (T) container.remove(key); + }, getExecutor()); + } + protected void set(CacheEntryType cacheType, int expireSeconds, String key, Object value) { if (key == null) { return; diff --git a/src/main/java/org/redkale/source/CacheSource.java b/src/main/java/org/redkale/source/CacheSource.java index af6d151e7..ccf48f6b6 100644 --- a/src/main/java/org/redkale/source/CacheSource.java +++ b/src/main/java/org/redkale/source/CacheSource.java @@ -205,6 +205,20 @@ public interface CacheSource extends Resourcable { return val == null ? defValue : val; } + //------------------------ getdel ------------------------ + default T getDel(String key, Type type) { + return (T) getDelAsync(key, type).join(); + } + + default String getDelString(String key) { + return getDel(key, String.class); + } + + default long getDelLong(String key, long defValue) { + Long val = getDel(key, Long.class); + return val == null ? defValue : val; + } + //------------------------ 键 Keys ------------------------ default long del(String... keys) { return delAsync(keys).join(); @@ -1049,6 +1063,17 @@ public interface CacheSource extends Resourcable { return getSetAsync(key, Long.class, value).thenApply(v -> v == null ? defValue : (Long) v); } + //------------------------ getdel ------------------------ + public CompletableFuture getDelAsync(String key, Type type); + + default CompletableFuture getDelStringAsync(String key) { + return getDelAsync(key, String.class); + } + + default CompletableFuture getDelLongAsync(String key, long defValue) { + return getDelAsync(key, Long.class).thenApply(v -> v == null ? defValue : (Long) v); + } + //------------------------ 键 Keys ------------------------ public CompletableFuture delAsync(String... keys);