diff --git a/src/org/redkale/source/CacheMemorySource.java b/src/org/redkale/source/CacheMemorySource.java index 52b9613c2..7e7213193 100644 --- a/src/org/redkale/source/CacheMemorySource.java +++ b/src/org/redkale/source/CacheMemorySource.java @@ -932,6 +932,22 @@ public class CacheMemorySource extends AbstractService impleme return new ArrayList<>(container.keySet()); } + @Override + public List queryKeysStartsWith(String startsWith) { + if (startsWith == null) return queryKeys(); + List rs = new ArrayList<>(); + container.keySet().stream().filter(x -> x.startsWith(startsWith)).forEach(x -> rs.add(x)); + return rs; + } + + @Override + public List queryKeysEndsWith(String endsWith) { + if (endsWith == null) return queryKeys(); + List rs = new ArrayList<>(); + container.keySet().stream().filter(x -> x.endsWith(endsWith)).forEach(x -> rs.add(x)); + return rs; + } + @Override public int getKeySize() { return container.size(); @@ -952,6 +968,16 @@ public class CacheMemorySource extends AbstractService impleme return CompletableFuture.completedFuture(new ArrayList<>(container.keySet())); } + @Override + public CompletableFuture> queryKeysStartsWithAsync(String startsWith) { + return CompletableFuture.completedFuture(queryKeysStartsWith(startsWith)); + } + + @Override + public CompletableFuture> queryKeysEndsWithAsync(String endsWith) { + return CompletableFuture.completedFuture(queryKeysEndsWith(endsWith)); + } + @Override public CompletableFuture getKeySizeAsync() { return CompletableFuture.completedFuture(container.size()); diff --git a/src/org/redkale/source/CacheSource.java b/src/org/redkale/source/CacheSource.java index 407688d47..6ff1e3f57 100644 --- a/src/org/redkale/source/CacheSource.java +++ b/src/org/redkale/source/CacheSource.java @@ -98,6 +98,10 @@ public interface CacheSource { public List queryKeys(); + public List queryKeysStartsWith(String startsWith); + + public List queryKeysEndsWith(String endsWith); + public int getKeySize(); public List> queryList(); @@ -215,6 +219,10 @@ public interface CacheSource { public CompletableFuture> queryKeysAsync(); + public CompletableFuture> queryKeysStartsWithAsync(String startsWith); + + public CompletableFuture> queryKeysEndsWithAsync(String endsWith); + public CompletableFuture getKeySizeAsync(); public CompletableFuture>> queryListAsync();