diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index 000a22f65..09aeedd50 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -295,23 +295,23 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public void hsetnx(final String key, final String field, final Type type, final T value) { - hsetnx(CacheEntryType.MAP, key, field, value); + public boolean hsetnx(final String key, final String field, final Type type, final T value) { + return hsetnx(CacheEntryType.MAP, key, field, value); } @Override - public void hsetnx(final String key, final String field, final Convert convert, final Type type, final T value) { - hsetnx(CacheEntryType.MAP, key, field, value); + public boolean hsetnx(final String key, final String field, final Convert convert, final Type type, final T value) { + return hsetnx(CacheEntryType.MAP, key, field, value); } @Override - public void hsetnxString(final String key, final String field, final String value) { - hsetnx(CacheEntryType.MAP, key, field, value); + public boolean hsetnxString(final String key, final String field, final String value) { + return hsetnx(CacheEntryType.MAP, key, field, value); } @Override - public void hsetnxLong(final String key, final String field, final long value) { - hsetnx(CacheEntryType.MAP, key, field, value); + public boolean hsetnxLong(final String key, final String field, final long value) { + return hsetnx(CacheEntryType.MAP, key, field, value); } @Override @@ -541,23 +541,23 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public CompletableFuture hsetnxAsync(final String key, final String field, final Type type, final T value) { - return CompletableFuture.runAsync(() -> hsetnx(key, field, type, value), getExecutor()).whenComplete(futureCompleteConsumer); + public CompletableFuture hsetnxAsync(final String key, final String field, final Type type, final T value) { + return CompletableFuture.supplyAsync(() -> hsetnx(key, field, type, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public CompletableFuture hsetnxAsync(final String key, final String field, final Convert convert, final Type type, final T value) { - return CompletableFuture.runAsync(() -> hsetnx(key, field, convert, type, value), getExecutor()).whenComplete(futureCompleteConsumer); + public CompletableFuture hsetnxAsync(final String key, final String field, final Convert convert, final Type type, final T value) { + return CompletableFuture.supplyAsync(() -> hsetnx(key, field, convert, type, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public CompletableFuture hsetnxStringAsync(final String key, final String field, final String value) { - return CompletableFuture.runAsync(() -> hsetnxString(key, field, value), getExecutor()).whenComplete(futureCompleteConsumer); + public CompletableFuture hsetnxStringAsync(final String key, final String field, final String value) { + return CompletableFuture.supplyAsync(() -> hsetnxString(key, field, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public CompletableFuture hsetnxLongAsync(final String key, final String field, final long value) { - return CompletableFuture.runAsync(() -> hsetnxLong(key, field, value), getExecutor()).whenComplete(futureCompleteConsumer); + public CompletableFuture hsetnxLongAsync(final String key, final String field, final long value) { + return CompletableFuture.supplyAsync(() -> hsetnxLong(key, field, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override @@ -701,17 +701,19 @@ public final class CacheMemorySource extends AbstractCacheSource { } } - protected void setnx(CacheEntryType cacheType, String key, Object value) { + protected boolean setnx(CacheEntryType cacheType, String key, Object value) { if (key == null) { - return; + return false; } CacheEntry entry = container.get(key); if (entry == null) { entry = new CacheEntry(cacheType, key, value, null, null, null); container.putIfAbsent(key, entry); + return true; } else { entry.expireSeconds = 0; entry.lastAccessed = (int) (System.currentTimeMillis() / 1000); + return false; } } @@ -731,18 +733,20 @@ public final class CacheMemorySource extends AbstractCacheSource { } } - protected void hsetnx(CacheEntryType cacheType, String key, String field, Object value) { + protected boolean hsetnx(CacheEntryType cacheType, String key, String field, Object value) { if (key == null) { - return; + return false; } CacheEntry entry = container.get(key); if (entry == null) { entry = new CacheEntry(CacheEntryType.MAP, key, value, null, null, new ConcurrentHashMap<>()); container.putIfAbsent(key, entry); entry.mapValue.putIfAbsent(field, value); + return true; } else { entry.expireSeconds = 0; entry.lastAccessed = (int) (System.currentTimeMillis() / 1000); + return false; } } @@ -788,13 +792,13 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public void setnx(String key, Type type, T value) { - setnx(CacheEntryType.OBJECT, key, value); + public boolean setnx(String key, Type type, T value) { + return setnx(CacheEntryType.OBJECT, key, value); } @Override - public void setnx(String key, Convert convert, Type type, T value) { - setnx(CacheEntryType.OBJECT, key, value); + public boolean setnx(String key, Convert convert, Type type, T value) { + return setnx(CacheEntryType.OBJECT, key, value); } @Override @@ -817,8 +821,8 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public void setnxString(String key, String value) { - setnx(CacheEntryType.STRING, key, value); + public boolean setnxString(String key, String value) { + return setnx(CacheEntryType.STRING, key, value); } @Override @@ -827,8 +831,8 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public void setnxLong(String key, long value) { - setnx(CacheEntryType.LONG, key, value); + public boolean setnxLong(String key, long value) { + return setnx(CacheEntryType.LONG, key, value); } @Override @@ -852,13 +856,13 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public CompletableFuture setnxAsync(String key, Type type, T value) { - return CompletableFuture.runAsync(() -> setnx(key, type, value), getExecutor()).whenComplete(futureCompleteConsumer); + public CompletableFuture setnxAsync(String key, Type type, T value) { + return CompletableFuture.supplyAsync(() -> setnx(key, type, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public CompletableFuture setnxAsync(String key, Convert convert, Type type, T value) { - return CompletableFuture.runAsync(() -> setnx(key, convert, type, value), getExecutor()).whenComplete(futureCompleteConsumer); + public CompletableFuture setnxAsync(String key, Convert convert, Type type, T value) { + return CompletableFuture.supplyAsync(() -> setnx(key, convert, type, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override @@ -877,8 +881,8 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public CompletableFuture setnxStringAsync(String key, String value) { - return CompletableFuture.runAsync(() -> setnxString(key, value), getExecutor()).whenComplete(futureCompleteConsumer); + public CompletableFuture setnxStringAsync(String key, String value) { + return CompletableFuture.supplyAsync(() -> setnxString(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override @@ -892,8 +896,8 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public CompletableFuture setnxLongAsync(String key, long value) { - return CompletableFuture.runAsync(() -> setnxLong(key, value), getExecutor()).whenComplete(futureCompleteConsumer); + public CompletableFuture setnxLongAsync(String key, long value) { + return CompletableFuture.supplyAsync(() -> setnxLong(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } protected void set(CacheEntryType cacheType, int expireSeconds, String key, Object value) { @@ -1758,13 +1762,13 @@ public final class CacheMemorySource extends AbstractCacheSource { } @Override - public void setnxBytes(final String key, final byte[] value) { - setnx(CacheEntryType.BYTES, key, value); + public boolean setnxBytes(final String key, final byte[] value) { + return setnx(CacheEntryType.BYTES, key, value); } @Override - public CompletableFuture setnxBytesAsync(final String key, byte[] value) { - return CompletableFuture.runAsync(() -> setnxBytes(key, value), getExecutor()).whenComplete(futureCompleteConsumer); + public CompletableFuture setnxBytesAsync(final String key, byte[] value) { + return CompletableFuture.supplyAsync(() -> setnxBytes(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override diff --git a/src/main/java/org/redkale/source/CacheSource.java b/src/main/java/org/redkale/source/CacheSource.java index a3e42a015..1ccf8ea9e 100644 --- a/src/main/java/org/redkale/source/CacheSource.java +++ b/src/main/java/org/redkale/source/CacheSource.java @@ -125,15 +125,15 @@ public interface CacheSource extends Resourcable { public void setBytes(final String key, final byte[] value); //------------------------ setnx ------------------------ - public void setnx(final String key, final Type type, final T value); + public boolean setnx(final String key, final Type type, final T value); - public void setnx(final String key, final Convert convert, final Type type, final T value); + public boolean setnx(final String key, final Convert convert, final Type type, final T value); - public void setnxString(final String key, final String value); + public boolean setnxString(final String key, final String value); - public void setnxLong(final String key, final long value); + public boolean setnxLong(final String key, final long value); - public void setnxBytes(final String key, final byte[] value); + public boolean setnxBytes(final String key, final byte[] value); //------------------------ setex ------------------------ public void setex(final String key, final int expireSeconds, final Type type, final T value); @@ -180,13 +180,13 @@ public interface CacheSource extends Resourcable { public void hsetLong(final String key, final String field, final long value); //------------------------ hsetnx ------------------------ - public void hsetnx(final String key, final String field, final Type type, final T value); + public boolean hsetnx(final String key, final String field, final Type type, final T value); - public void hsetnx(final String key, final String field, final Convert convert, final Type type, final T value); + public boolean hsetnx(final String key, final String field, final Convert convert, final Type type, final T value); - public void hsetnxString(final String key, final String field, final String value); + public boolean hsetnxString(final String key, final String field, final String value); - public void hsetnxLong(final String key, final String field, final long value); + public boolean hsetnxLong(final String key, final String field, final long value); //------------------------ hxxx ------------------------ public int hdel(final String key, String... fields); @@ -430,15 +430,15 @@ public interface CacheSource extends Resourcable { public CompletableFuture setBytesAsync(final String key, final byte[] value); //------------------------ setnxAsync ------------------------ - public CompletableFuture setnxAsync(final String key, final Type type, final T value); + public CompletableFuture setnxAsync(final String key, final Type type, final T value); - public CompletableFuture setnxAsync(final String key, final Convert convert, final Type type, final T value); + public CompletableFuture setnxAsync(final String key, final Convert convert, final Type type, final T value); - public CompletableFuture setnxStringAsync(final String key, final String value); + public CompletableFuture setnxStringAsync(final String key, final String value); - public CompletableFuture setnxLongAsync(final String key, long value); + public CompletableFuture setnxLongAsync(final String key, long value); - public CompletableFuture setnxBytesAsync(final String key, final byte[] value); + public CompletableFuture setnxBytesAsync(final String key, final byte[] value); //------------------------ setexAsync ------------------------ public CompletableFuture setexAsync(final String key, final int expireSeconds, final Type type, final T value); @@ -485,13 +485,13 @@ public interface CacheSource extends Resourcable { public CompletableFuture hsetLongAsync(final String key, final String field, final long value); //------------------------ hsetnxAsync ------------------------ - public CompletableFuture hsetnxAsync(final String key, final String field, final Type type, final T value); + public CompletableFuture hsetnxAsync(final String key, final String field, final Type type, final T value); - public CompletableFuture hsetnxAsync(final String key, final String field, final Convert convert, final Type type, final T value); + public CompletableFuture hsetnxAsync(final String key, final String field, final Convert convert, final Type type, final T value); - public CompletableFuture hsetnxStringAsync(final String key, final String field, final String value); + public CompletableFuture hsetnxStringAsync(final String key, final String field, final String value); - public CompletableFuture hsetnxLongAsync(final String key, final String field, final long value); + public CompletableFuture hsetnxLongAsync(final String key, final String field, final long value); //------------------------ hxxxAsync ------------------------ public CompletableFuture hdelAsync(final String key, String... fields);