加入spop系列方法
This commit is contained in:
@@ -1328,6 +1328,65 @@ public final class CacheMemorySource<V extends Object> extends AbstractService i
|
|||||||
return CompletableFuture.supplyAsync(() -> removeLongListItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer);
|
return CompletableFuture.supplyAsync(() -> removeLongListItem(key, value), getExecutor()).whenComplete(futureCompleteConsumer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String spopStringSetItem(final String key) {
|
||||||
|
return (String) spopSetItem(key, String.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> spopStringSetItem(final String key, int count) {
|
||||||
|
return (List) spopSetItem(key, count, String.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long spopLongSetItem(final String key) {
|
||||||
|
return (Long) spopSetItem(key, long.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Long> spopLongSetItem(final String key, int count) {
|
||||||
|
return (List) spopSetItem(key, count, long.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T spopSetItem(final String key, final Type componentType) {
|
||||||
|
if (key == null) return null;
|
||||||
|
CacheEntry entry = container.get(key);
|
||||||
|
if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (entry.csetValue.isEmpty()) return null;
|
||||||
|
Iterator it = entry.csetValue.iterator();
|
||||||
|
if (it.hasNext()) {
|
||||||
|
Object obj = it.next();
|
||||||
|
if (obj != null && componentType == long.class) obj = ((Number) obj).longValue();
|
||||||
|
it.remove();
|
||||||
|
return (T) obj;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> List<T> spopSetItem(final String key, final int count, final Type componentType) {
|
||||||
|
if (key == null) return new ArrayList<>();
|
||||||
|
CacheEntry entry = container.get(key);
|
||||||
|
if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
if (entry.csetValue.isEmpty()) return new ArrayList<>();
|
||||||
|
Iterator it = entry.csetValue.iterator();
|
||||||
|
List<T> list = new ArrayList<>();
|
||||||
|
int index = 0;
|
||||||
|
while (it.hasNext()) {
|
||||||
|
Object obj = it.next();
|
||||||
|
if (obj != null && componentType == long.class) obj = ((Number) obj).longValue();
|
||||||
|
list.add((T) obj);
|
||||||
|
it.remove();
|
||||||
|
if (++index >= count) break;
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
protected void appendSetItem(CacheEntryType cacheType, String key, Object value) {
|
protected void appendSetItem(CacheEntryType cacheType, String key, Object value) {
|
||||||
if (key == null) return;
|
if (key == null) return;
|
||||||
CacheEntry entry = container.get(key);
|
CacheEntry entry = container.get(key);
|
||||||
@@ -1489,4 +1548,34 @@ public final class CacheMemorySource<V extends Object> extends AbstractService i
|
|||||||
public CompletableFuture<Integer> getKeySizeAsync() {
|
public CompletableFuture<Integer> getKeySizeAsync() {
|
||||||
return CompletableFuture.completedFuture(container.size());
|
return CompletableFuture.completedFuture(container.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> CompletableFuture<T> spopSetItemAsync(String key, Type componentType) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> spopSetItem(key, componentType), getExecutor()).whenComplete(futureCompleteConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> CompletableFuture<List<T>> spopSetItemAsync(String key, int count, Type componentType) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> spopSetItem(key, count, componentType), getExecutor()).whenComplete(futureCompleteConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<String> spopStringSetItemAsync(String key) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> spopStringSetItem(key), getExecutor()).whenComplete(futureCompleteConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<List<String>> spopStringSetItemAsync(String key, int count) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> spopStringSetItem(key, count), getExecutor()).whenComplete(futureCompleteConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<Long> spopLongSetItemAsync(String key) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> spopLongSetItem(key), getExecutor()).whenComplete(futureCompleteConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CompletableFuture<List<Long>> spopLongSetItemAsync(String key, int count) {
|
||||||
|
return CompletableFuture.supplyAsync(() -> spopLongSetItem(key, count), getExecutor()).whenComplete(futureCompleteConsumer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,6 +174,10 @@ public interface CacheSource<V extends Object> {
|
|||||||
|
|
||||||
public <T> int removeSetItem(final String key, final Type componentType, final T value);
|
public <T> int removeSetItem(final String key, final Type componentType, final T value);
|
||||||
|
|
||||||
|
public <T> T spopSetItem(final String key, final Type componentType);
|
||||||
|
|
||||||
|
public <T> List<T> spopSetItem(final String key, final int count, final Type componentType);
|
||||||
|
|
||||||
public List<String> queryKeys();
|
public List<String> queryKeys();
|
||||||
|
|
||||||
public List<String> queryKeysStartsWith(String startsWith);
|
public List<String> queryKeysStartsWith(String startsWith);
|
||||||
@@ -204,6 +208,10 @@ public interface CacheSource<V extends Object> {
|
|||||||
|
|
||||||
public void appendStringListItem(final String key, final String value);
|
public void appendStringListItem(final String key, final String value);
|
||||||
|
|
||||||
|
public String spopStringSetItem(final String key);
|
||||||
|
|
||||||
|
public List<String> spopStringSetItem(final String key, final int count);
|
||||||
|
|
||||||
public int removeStringListItem(final String key, final String value);
|
public int removeStringListItem(final String key, final String value);
|
||||||
|
|
||||||
public boolean existsStringSetItem(final String key, final String value);
|
public boolean existsStringSetItem(final String key, final String value);
|
||||||
@@ -232,6 +240,10 @@ public interface CacheSource<V extends Object> {
|
|||||||
|
|
||||||
public void appendLongListItem(final String key, final long value);
|
public void appendLongListItem(final String key, final long value);
|
||||||
|
|
||||||
|
public long spopLongSetItem(final String key);
|
||||||
|
|
||||||
|
public List<Long> spopLongSetItem(final String key, final int count);
|
||||||
|
|
||||||
public int removeLongListItem(final String key, final long value);
|
public int removeLongListItem(final String key, final long value);
|
||||||
|
|
||||||
public boolean existsLongSetItem(final String key, final long value);
|
public boolean existsLongSetItem(final String key, final long value);
|
||||||
@@ -363,6 +375,10 @@ public interface CacheSource<V extends Object> {
|
|||||||
|
|
||||||
public CompletableFuture<Void> appendListItemAsync(final String key, final V value);
|
public CompletableFuture<Void> appendListItemAsync(final String key, final V value);
|
||||||
|
|
||||||
|
public <T> CompletableFuture<T> spopSetItemAsync(final String key, final Type componentType);
|
||||||
|
|
||||||
|
public <T> CompletableFuture<List<T>> spopSetItemAsync(final String key, final int count, final Type componentType);
|
||||||
|
|
||||||
public CompletableFuture<Integer> removeListItemAsync(final String key, final V value);
|
public CompletableFuture<Integer> removeListItemAsync(final String key, final V value);
|
||||||
|
|
||||||
public CompletableFuture<Boolean> existsSetItemAsync(final String key, final V value);
|
public CompletableFuture<Boolean> existsSetItemAsync(final String key, final V value);
|
||||||
@@ -411,6 +427,10 @@ public interface CacheSource<V extends Object> {
|
|||||||
|
|
||||||
public CompletableFuture<Void> appendStringListItemAsync(final String key, final String value);
|
public CompletableFuture<Void> appendStringListItemAsync(final String key, final String value);
|
||||||
|
|
||||||
|
public CompletableFuture<String> spopStringSetItemAsync(final String key);
|
||||||
|
|
||||||
|
public CompletableFuture<List<String>> spopStringSetItemAsync(final String key, final int count);
|
||||||
|
|
||||||
public CompletableFuture<Integer> removeStringListItemAsync(final String key, final String value);
|
public CompletableFuture<Integer> removeStringListItemAsync(final String key, final String value);
|
||||||
|
|
||||||
public CompletableFuture<Boolean> existsStringSetItemAsync(final String key, final String value);
|
public CompletableFuture<Boolean> existsStringSetItemAsync(final String key, final String value);
|
||||||
@@ -439,6 +459,10 @@ public interface CacheSource<V extends Object> {
|
|||||||
|
|
||||||
public CompletableFuture<Void> appendLongListItemAsync(final String key, final long value);
|
public CompletableFuture<Void> appendLongListItemAsync(final String key, final long value);
|
||||||
|
|
||||||
|
public CompletableFuture<Long> spopLongSetItemAsync(final String key);
|
||||||
|
|
||||||
|
public CompletableFuture<List<Long>> spopLongSetItemAsync(final String key, final int count);
|
||||||
|
|
||||||
public CompletableFuture<Integer> removeLongListItemAsync(final String key, final long value);
|
public CompletableFuture<Integer> removeLongListItemAsync(final String key, final long value);
|
||||||
|
|
||||||
public CompletableFuture<Boolean> existsLongSetItemAsync(final String key, final long value);
|
public CompletableFuture<Boolean> existsLongSetItemAsync(final String key, final long value);
|
||||||
|
|||||||
Reference in New Issue
Block a user