CacheSource增加zrank方法
This commit is contained in:
@@ -1355,6 +1355,52 @@ public final class CacheMemorySource extends AbstractCacheSource {
|
||||
}, getExecutor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Long> zrankAsync(String key, String member) {
|
||||
return supplyAsync(() -> {
|
||||
if (key == null) {
|
||||
return null;
|
||||
}
|
||||
CacheEntry entry = container.get(key);
|
||||
if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) {
|
||||
return null;
|
||||
}
|
||||
List<CacheScoredValue.NumberScoredValue> list = new ArrayList<>(entry.csetValue);
|
||||
Collections.sort(list);
|
||||
long c = 0;
|
||||
for (CacheScoredValue.NumberScoredValue v : list) {
|
||||
if (Objects.equals(v.getValue(), member)) {
|
||||
return c;
|
||||
}
|
||||
c++;
|
||||
}
|
||||
return null;
|
||||
}, getExecutor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Long> zrevrankAsync(String key, String member) {
|
||||
return supplyAsync(() -> {
|
||||
if (key == null) {
|
||||
return null;
|
||||
}
|
||||
CacheEntry entry = container.get(key);
|
||||
if (entry == null || !entry.isSetCacheType() || entry.csetValue == null) {
|
||||
return null;
|
||||
}
|
||||
List<CacheScoredValue.NumberScoredValue> list = new ArrayList<>(entry.csetValue);
|
||||
Collections.sort(list, Collections.reverseOrder());
|
||||
long c = 0;
|
||||
for (CacheScoredValue.NumberScoredValue v : list) {
|
||||
if (Objects.equals(v.getValue(), member)) {
|
||||
return c;
|
||||
}
|
||||
c++;
|
||||
}
|
||||
return null;
|
||||
}, getExecutor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Long> zremAsync(String key, String... members) {
|
||||
return supplyAsync(() -> {
|
||||
|
||||
@@ -780,6 +780,14 @@ public interface CacheSource extends Resourcable {
|
||||
return zcardAsync(key).join();
|
||||
}
|
||||
|
||||
default Long zrank(String key, String member) {
|
||||
return zrankAsync(key, member).join();
|
||||
}
|
||||
|
||||
default Long zrevrank(String key, String member) {
|
||||
return zrevrankAsync(key, member).join();
|
||||
}
|
||||
|
||||
//---------------------- CompletableFuture 异步版 ---------------------------------
|
||||
public CompletableFuture<Boolean> isOpenAsync();
|
||||
|
||||
@@ -1389,11 +1397,10 @@ public interface CacheSource extends Resourcable {
|
||||
//
|
||||
|
||||
//
|
||||
// public <T> CompletableFuture<Long> zrankAsync(String key, String member, boolean withScore);
|
||||
//
|
||||
// default <T> CompletableFuture<Long> zrankAsync(String key, String member) {
|
||||
// return zrankAsync(key, member, false);
|
||||
// }
|
||||
public CompletableFuture<Long> zrankAsync(String key, String member);
|
||||
|
||||
public CompletableFuture<Long> zrevrankAsync(String key, String member);
|
||||
|
||||
//
|
||||
// public <T> CompletableFuture<Set<T>> zscanAsync(String key, Type componentType, AtomicLong cursor, int limit, String pattern);
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user