CacheSource增加zrank方法
This commit is contained in:
@@ -1355,6 +1355,52 @@ public final class CacheMemorySource extends AbstractCacheSource {
|
|||||||
}, getExecutor());
|
}, 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
|
@Override
|
||||||
public CompletableFuture<Long> zremAsync(String key, String... members) {
|
public CompletableFuture<Long> zremAsync(String key, String... members) {
|
||||||
return supplyAsync(() -> {
|
return supplyAsync(() -> {
|
||||||
|
|||||||
@@ -780,6 +780,14 @@ public interface CacheSource extends Resourcable {
|
|||||||
return zcardAsync(key).join();
|
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 异步版 ---------------------------------
|
//---------------------- CompletableFuture 异步版 ---------------------------------
|
||||||
public CompletableFuture<Boolean> isOpenAsync();
|
public CompletableFuture<Boolean> isOpenAsync();
|
||||||
|
|
||||||
@@ -1389,11 +1397,10 @@ public interface CacheSource extends Resourcable {
|
|||||||
//
|
//
|
||||||
|
|
||||||
//
|
//
|
||||||
// public <T> CompletableFuture<Long> zrankAsync(String key, String member, boolean withScore);
|
public CompletableFuture<Long> zrankAsync(String key, String member);
|
||||||
//
|
|
||||||
// default <T> CompletableFuture<Long> zrankAsync(String key, String member) {
|
public CompletableFuture<Long> zrevrankAsync(String key, String member);
|
||||||
// return zrankAsync(key, member, false);
|
|
||||||
// }
|
|
||||||
//
|
//
|
||||||
// public <T> CompletableFuture<Set<T>> zscanAsync(String key, Type componentType, AtomicLong cursor, int limit, String pattern);
|
// public <T> CompletableFuture<Set<T>> zscanAsync(String key, Type componentType, AtomicLong cursor, int limit, String pattern);
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user