From da141cc6bd2fd3c8096880d70b2ff5975db10ce1 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Thu, 16 Jul 2020 23:43:35 +0800 Subject: [PATCH] --- src/org/redkale/source/CacheMemorySource.java | 199 +++++++++++++----- src/org/redkale/source/CacheSource.java | 65 ++++++ 2 files changed, 213 insertions(+), 51 deletions(-) diff --git a/src/org/redkale/source/CacheMemorySource.java b/src/org/redkale/source/CacheMemorySource.java index 2cfa5ce03..c22041434 100644 --- a/src/org/redkale/source/CacheMemorySource.java +++ b/src/org/redkale/source/CacheMemorySource.java @@ -320,6 +320,77 @@ public class CacheMemorySource extends AbstractService impleme logger.log(Level.SEVERE, CacheSource.class.getSimpleName() + "(" + resourceName() + ") store to file error ", e); } } + //----------- hxxx -------------- + + @Override + public long hincr(final String key, String field) { + return 0; + } + + @Override + public long hincr(final String key, String field, long num) { + return 0; + } + + @Override + public long hdecr(final String key, String field) { + return 0; + } + + @Override + public long hdecr(final String key, String field, long num) { + return 0; + } + + @Override + public boolean hexists(final String key, String field) { + return false; + } + + @Override + public void hset(final String key, final String field, final Convert convert, final T value) { + } + + @Override + public void hset(final String key, final String field, final Type type, final T value) { + } + + @Override + public void hset(final String key, final String field, final Convert convert, final Type type, final T value) { + } + + @Override + public void hsetString(final String key, final String field, final String value) { + } + + @Override + public void hsetLong(final String key, final String field, final long value) { + } + + @Override + public void hmset(final String key, final Serializable... values) { + } + + @Override + public Serializable[] hmget(final String key, final String... fields) { + return null; + } + + @Override + public T hget(final String key, final String field, final Type type) { + return null; + } + + @Override + public String hgetString(final String key, final String field) { + return null; + } + + @Override + public long hgetLong(final String key, final String field, long defValue) { + return 0L; + } + //----------- hxxx -------------- @Override public boolean exists(String key) { @@ -365,7 +436,84 @@ public class CacheMemorySource extends AbstractService impleme if (entry == null || entry.isExpired()) return defValue; return entry.objectValue == null ? defValue : (entry.objectValue instanceof AtomicLong ? ((AtomicLong) entry.objectValue).get() : (Long) entry.objectValue); } + //----------- hxxx -------------- + @Override + public CompletableFuture hincrAsync(final String key, String field) { + return CompletableFuture.supplyAsync(() -> hincr(key, field), getExecutor()); + } + + @Override + public CompletableFuture hincrAsync(final String key, String field, long num) { + return CompletableFuture.supplyAsync(() -> hincr(key, field, num), getExecutor()); + } + + @Override + public CompletableFuture hdecrAsync(final String key, String field) { + return CompletableFuture.supplyAsync(() -> hdecr(key, field), getExecutor()); + } + + @Override + public CompletableFuture hdecrAsync(final String key, String field, long num) { + return CompletableFuture.supplyAsync(() -> hdecr(key, field, num), getExecutor()); + } + + @Override + public CompletableFuture hexistsAsync(final String key, String field) { + return CompletableFuture.supplyAsync(() -> hexists(key, field), getExecutor()); + } + + @Override + public CompletableFuture hsetAsync(final String key, final String field, final Convert convert, final T value) { + return CompletableFuture.runAsync(() -> hset(key, field, convert, value), getExecutor()).whenComplete(futureCompleteConsumer); + } + + @Override + public CompletableFuture hsetAsync(final String key, final String field, final Type type, final T value) { + return CompletableFuture.runAsync(() -> hset(key, field, type, value), getExecutor()).whenComplete(futureCompleteConsumer); + } + + @Override + public CompletableFuture hsetAsync(final String key, final String field, final Convert convert, final Type type, final T value) { + return CompletableFuture.runAsync(() -> hset(key, field, convert, type, value), getExecutor()).whenComplete(futureCompleteConsumer); + } + + @Override + public CompletableFuture hsetStringAsync(final String key, final String field, final String value) { + return CompletableFuture.runAsync(() -> hsetString(key, field, value), getExecutor()).whenComplete(futureCompleteConsumer); + } + + @Override + public CompletableFuture hsetLongAsync(final String key, final String field, final long value) { + return CompletableFuture.runAsync(() -> hsetLong(key, field, value), getExecutor()).whenComplete(futureCompleteConsumer); + } + + @Override + public CompletableFuture hmsetAsync(final String key, final Serializable... values) { + return CompletableFuture.runAsync(() -> hmset(key, values), getExecutor()).whenComplete(futureCompleteConsumer); + } + + @Override + public CompletableFuture hmgetAsync(final String key, final String... fields) { + return CompletableFuture.supplyAsync(() -> hmget(key, fields), getExecutor()); + } + + @Override + public CompletableFuture hgetAsync(final String key, final String field, final Type type) { + return CompletableFuture.supplyAsync(() -> hget(key, field, type), getExecutor()); + } + + @Override + public CompletableFuture hgetStringAsync(final String key, final String field) { + return CompletableFuture.supplyAsync(() -> hgetString(key, field), getExecutor()); + } + + @Override + public CompletableFuture hgetLongAsync(final String key, final String field, long defValue) { + return CompletableFuture.supplyAsync(() -> hgetLong(key, field, defValue), getExecutor()); + } + + //----------- hxxx -------------- @Override public CompletableFuture getAsync(final String key) { return CompletableFuture.supplyAsync(() -> get(key), getExecutor()); @@ -387,7 +535,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - @SuppressWarnings("unchecked") public V getAndRefresh(String key, final int expireSeconds) { if (key == null) return null; @@ -406,7 +553,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - @SuppressWarnings("unchecked") public String getStringAndRefresh(String key, final int expireSeconds) { if (key == null) return null; @@ -418,7 +564,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public long getLongAndRefresh(String key, final int expireSeconds, long defValue) { if (key == null) return defValue; CacheEntry entry = container.get(key); @@ -430,7 +575,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture getAndRefreshAsync(final String key, final int expireSeconds) { return CompletableFuture.supplyAsync(() -> getAndRefresh(key, expireSeconds), getExecutor()); } @@ -441,19 +585,16 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture getStringAndRefreshAsync(final String key, final int expireSeconds) { return CompletableFuture.supplyAsync(() -> getStringAndRefresh(key, expireSeconds), getExecutor()); } @Override - public CompletableFuture getLongAndRefreshAsync(final String key, final int expireSeconds, long defValue) { return CompletableFuture.supplyAsync(() -> getLongAndRefresh(key, expireSeconds, defValue), getExecutor()); } @Override - public void refresh(String key, final int expireSeconds) { if (key == null) return; CacheEntry entry = container.get(key); @@ -463,7 +604,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture refreshAsync(final String key, final int expireSeconds) { return CompletableFuture.runAsync(() -> refresh(key, expireSeconds), getExecutor()).whenComplete(futureCompleteConsumer); } @@ -482,7 +622,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void set(String key, V value) { set(CacheEntryType.OBJECT, key, value); } @@ -503,13 +642,11 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void setString(String key, String value) { set(CacheEntryType.STRING, key, value); } @Override - public void setLong(String key, long value) { set(CacheEntryType.LONG, key, value); } @@ -540,7 +677,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture setLongAsync(String key, long value) { return CompletableFuture.runAsync(() -> setLong(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @@ -559,7 +695,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void set(int expireSeconds, String key, V value) { set(CacheEntryType.OBJECT, expireSeconds, key, value); } @@ -585,13 +720,11 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void setLong(int expireSeconds, String key, long value) { set(CacheEntryType.LONG, expireSeconds, key, value); } @Override - public CompletableFuture setAsync(int expireSeconds, String key, V value) { return CompletableFuture.runAsync(() -> set(expireSeconds, key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @@ -617,13 +750,11 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture setLongAsync(int expireSeconds, String key, long value) { return CompletableFuture.runAsync(() -> setLong(expireSeconds, key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public void setExpireSeconds(String key, int expireSeconds) { if (key == null) return; CacheEntry entry = container.get(key); @@ -632,32 +763,27 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture setExpireSecondsAsync(final String key, final int expireSeconds) { return CompletableFuture.runAsync(() -> setExpireSeconds(key, expireSeconds), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public void remove(String key) { if (key == null) return; container.remove(key); } @Override - public long incr(final String key) { return incr(key, 1); } @Override - public CompletableFuture incrAsync(final String key) { return CompletableFuture.supplyAsync(() -> incr(key), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public long incr(final String key, long num) { CacheEntry entry = container.get(key); if (entry == null) { @@ -875,7 +1001,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public Collection getCollectionAndRefresh(final String key, final int expireSeconds) { return (Collection) getAndRefresh(key, expireSeconds); } @@ -886,7 +1011,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public Collection getStringCollectionAndRefresh(final String key, final int expireSeconds) { return (Collection) getAndRefresh(key, expireSeconds); } @@ -936,13 +1060,11 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public Collection getLongCollectionAndRefresh(final String key, final int expireSeconds) { return (Collection) getAndRefresh(key, expireSeconds); } @Override - public CompletableFuture> getCollectionAndRefreshAsync(final String key, final int expireSeconds) { return CompletableFuture.supplyAsync(() -> getCollectionAndRefresh(key, expireSeconds), getExecutor()); } @@ -953,13 +1075,11 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture> getStringCollectionAndRefreshAsync(final String key, final int expireSeconds) { return CompletableFuture.supplyAsync(() -> getStringCollectionAndRefresh(key, expireSeconds), getExecutor()); } @Override - public CompletableFuture> getLongCollectionAndRefreshAsync(final String key, final int expireSeconds) { return CompletableFuture.supplyAsync(() -> getLongCollectionAndRefresh(key, expireSeconds), getExecutor()); } @@ -979,7 +1099,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void appendListItem(String key, V value) { appendListItem(CacheEntryType.OBJECT_LIST, key, value); } @@ -990,19 +1109,16 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void appendStringListItem(String key, String value) { appendListItem(CacheEntryType.STRING_LIST, key, value); } @Override - public void appendLongListItem(String key, long value) { appendListItem(CacheEntryType.LONG_LIST, key, value); } @Override - public CompletableFuture appendListItemAsync(final String key, final V value) { return CompletableFuture.runAsync(() -> appendListItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @@ -1013,19 +1129,16 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture appendStringListItemAsync(final String key, final String value) { return CompletableFuture.runAsync(() -> appendStringListItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public CompletableFuture appendLongListItemAsync(final String key, final long value) { return CompletableFuture.runAsync(() -> appendLongListItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public void removeListItem(String key, V value) { if (key == null) return; CacheEntry entry = container.get(key); @@ -1042,7 +1155,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void removeStringListItem(String key, String value) { if (key == null) return; CacheEntry entry = container.get(key); @@ -1051,7 +1163,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void removeLongListItem(String key, long value) { if (key == null) return; CacheEntry entry = container.get(key); @@ -1060,7 +1171,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture removeListItemAsync(final String key, final V value) { return CompletableFuture.runAsync(() -> removeListItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @@ -1071,13 +1181,11 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture removeStringListItemAsync(final String key, final String value) { return CompletableFuture.runAsync(() -> removeStringListItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public CompletableFuture removeLongListItemAsync(final String key, final long value) { return CompletableFuture.runAsync(() -> removeLongListItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @@ -1097,7 +1205,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void appendSetItem(String key, V value) { appendSetItem(CacheEntryType.OBJECT_SET, key, value); } @@ -1108,19 +1215,16 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void appendStringSetItem(String key, String value) { appendSetItem(CacheEntryType.OBJECT_SET, key, value); } @Override - public void appendLongSetItem(String key, long value) { appendSetItem(CacheEntryType.OBJECT_SET, key, value); } @Override - public CompletableFuture appendSetItemAsync(final String key, final V value) { return CompletableFuture.runAsync(() -> appendSetItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @@ -1131,19 +1235,16 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture appendStringSetItemAsync(final String key, final String value) { return CompletableFuture.runAsync(() -> appendStringSetItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public CompletableFuture appendLongSetItemAsync(final String key, final long value) { return CompletableFuture.runAsync(() -> appendLongSetItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public void removeSetItem(String key, V value) { if (key == null) return; CacheEntry entry = container.get(key); @@ -1160,7 +1261,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public void removeStringSetItem(String key, String value) { if (key == null) return; CacheEntry entry = container.get(key); @@ -1178,7 +1278,6 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture removeSetItemAsync(final String key, final V value) { return CompletableFuture.runAsync(() -> removeSetItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @@ -1189,13 +1288,11 @@ public class CacheMemorySource extends AbstractService impleme } @Override - public CompletableFuture removeStringSetItemAsync(final String key, final String value) { return CompletableFuture.runAsync(() -> removeStringSetItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } @Override - public CompletableFuture removeLongSetItemAsync(final String key, final long value) { return CompletableFuture.runAsync(() -> removeLongSetItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer); } diff --git a/src/org/redkale/source/CacheSource.java b/src/org/redkale/source/CacheSource.java index dc31c35ad..5ccf97bbe 100644 --- a/src/org/redkale/source/CacheSource.java +++ b/src/org/redkale/source/CacheSource.java @@ -5,6 +5,7 @@ */ package org.redkale.source; +import java.io.Serializable; import java.lang.reflect.Type; import java.util.*; import java.util.concurrent.*; @@ -69,6 +70,38 @@ public interface CacheSource { return rs; } + //----------- hxxx -------------- + public long hincr(final String key, String field); + + public long hincr(final String key, String field, long num); + + public long hdecr(final String key, String field); + + public long hdecr(final String key, String field, long num); + + public boolean hexists(final String key, String field); + + public void hset(final String key, final String field, final Convert convert, final T value); + + public void hset(final String key, final String field, final Type type, final T value); + + public void hset(final String key, final String field, final Convert convert, final Type type, final T value); + + public void hsetString(final String key, final String field, final String value); + + public void hsetLong(final String key, final String field, final long value); + + public void hmset(final String key, final Serializable... values); + + public Serializable[] hmget(final String key, final String... fields); + + public T hget(final String key, final String field, final Type type); + + public String hgetString(final String key, final String field); + + public long hgetLong(final String key, final String field, long defValue); + //----------- hxxx -------------- + public void refresh(final String key, final int expireSeconds); public void set(final String key, final V value); @@ -266,6 +299,38 @@ public interface CacheSource { public CompletableFuture decrAsync(final String key, long num); + //----------- hxxx -------------- + public CompletableFuture hincrAsync(final String key, String field); + + public CompletableFuture hincrAsync(final String key, String field, long num); + + public CompletableFuture hdecrAsync(final String key, String field); + + public CompletableFuture hdecrAsync(final String key, String field, long num); + + public CompletableFuture hexistsAsync(final String key, String field); + + public CompletableFuture hsetAsync(final String key, final String field, final Convert convert, final T value); + + public CompletableFuture hsetAsync(final String key, final String field, final Type type, final T value); + + public CompletableFuture hsetAsync(final String key, final String field, final Convert convert, final Type type, final T value); + + public CompletableFuture hsetStringAsync(final String key, final String field, final String value); + + public CompletableFuture hsetLongAsync(final String key, final String field, final long value); + + public CompletableFuture hmsetAsync(final String key, final Serializable... values); + + public CompletableFuture hmgetAsync(final String key, final String... fields); + + public CompletableFuture hgetAsync(final String key, final String field, final Type type); + + public CompletableFuture hgetStringAsync(final String key, final String field); + + public CompletableFuture hgetLongAsync(final String key, final String field, long defValue); + //----------- hxxx -------------- + public CompletableFuture> getMapAsync(final Type componentType, final String... keys); public CompletableFuture> getCollectionAsync(final String key);