diff --git a/src/org/redkale/source/CacheMemorySource.java b/src/org/redkale/source/CacheMemorySource.java index 9104515f3..102508070 100644 --- a/src/org/redkale/source/CacheMemorySource.java +++ b/src/org/redkale/source/CacheMemorySource.java @@ -452,6 +452,14 @@ public final class CacheMemorySource extends AbstractService i return rs; } + @Override + public Map hmap(final String key, final Type type, int offset, int limit) { + if (key == null) return new HashMap(); + CacheEntry entry = container.get(key); + if (entry == null || entry.isExpired() || entry.mapValue == null) return new HashMap(); + return new HashMap(entry.mapValue); + } + @Override public T hget(final String key, final String field, final Type type) { if (key == null) return null; @@ -593,6 +601,11 @@ public final class CacheMemorySource extends AbstractService i return CompletableFuture.supplyAsync(() -> hmget(key, fields), getExecutor()); } + @Override + public CompletableFuture> hmapAsync(final String key, final Type type, int offset, int limit) { + return CompletableFuture.supplyAsync(() -> hmap(key, type, offset, limit), getExecutor()); + } + @Override public CompletableFuture hgetAsync(final String key, final String field, final Type type) { return CompletableFuture.supplyAsync(() -> hget(key, field, type), getExecutor()); diff --git a/src/org/redkale/source/CacheSource.java b/src/org/redkale/source/CacheSource.java index d14aa5d44..02e2f7125 100644 --- a/src/org/redkale/source/CacheSource.java +++ b/src/org/redkale/source/CacheSource.java @@ -99,6 +99,8 @@ public interface CacheSource { public List hmget(final String key, final String... fields); + public Map hmap(final String key, final Type type, int offset, int limit); + public T hget(final String key, final String field, final Type type); public String hgetString(final String key, final String field); @@ -332,6 +334,8 @@ public interface CacheSource { public CompletableFuture> hmgetAsync(final String key, final String... fields); + public CompletableFuture> hmapAsync(final String key, final Type type, int offset, int limit); + public CompletableFuture hgetAsync(final String key, final String field, final Type type); public CompletableFuture hgetStringAsync(final String key, final String field);