CacheSource.lock
This commit is contained in:
@@ -125,6 +125,108 @@ public interface CacheSource extends Resourcable {
|
|||||||
|
|
||||||
public CompletableFuture<Integer> publishAsync(String topic, byte[] message);
|
public CompletableFuture<Integer> publishAsync(String topic, byte[] message);
|
||||||
|
|
||||||
|
// ------------------------ 令牌桶算法限流 ------------------------
|
||||||
|
/**
|
||||||
|
* 令牌桶算法限流, 返回负数表示无令牌, 其他为有令牌
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* 每秒限制请求1次: rate:1, capacity:1, requested:1
|
||||||
|
* 每秒限制请求10次: rate:10, capacity:10, requested:1
|
||||||
|
* 每分钟限制请求1次: rate:1, capacity:60, requested:60
|
||||||
|
* 每分钟限制请求10次: rate:1, capacity:60, requested:6
|
||||||
|
* 每小时限制请求1次: rate:1, capacity:3600, requested:3600
|
||||||
|
* 每小时限制请求10次: rate:1, capacity:3600, requested:360
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param key 限流的键
|
||||||
|
* @param rate 令牌桶每秒填充平均速率
|
||||||
|
* @param capacity 令牌桶总容量
|
||||||
|
* @param requested 需要的令牌数
|
||||||
|
* @return 可用令牌数
|
||||||
|
*/
|
||||||
|
default long rateLimit(String key, long rate, long capacity, long requested) {
|
||||||
|
return rateLimitAsync(key, rate, capacity, requested).join();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 令牌桶算法限流, 返回负数表示无令牌, 其他为有令牌
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* 每秒限制请求1次: rate:1, capacity:1, requested:1
|
||||||
|
* 每秒限制请求10次: rate:10, capacity:10, requested:1
|
||||||
|
* 每分钟限制请求1次: rate:1, capacity:60, requested:60
|
||||||
|
* 每分钟限制请求10次: rate:1, capacity:60, requested:6
|
||||||
|
* 每小时限制请求1次: rate:1, capacity:3600, requested:3600
|
||||||
|
* 每小时限制请求10次: rate:1, capacity:3600, requested:360
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param key 限流的键
|
||||||
|
* @param rate 令牌桶每秒填充平均速率
|
||||||
|
* @param capacity 令牌桶总容量
|
||||||
|
* @return 可用令牌数
|
||||||
|
*/
|
||||||
|
default long rateLimit(String key, long rate, long capacity) {
|
||||||
|
return rateLimit(key, rate, capacity, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 令牌桶算法限流, 返回负数表示无令牌, 其他为有令牌
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* 每秒限制请求1次: rate:1, capacity:1, requested:1
|
||||||
|
* 每秒限制请求10次: rate:10, capacity:10, requested:1
|
||||||
|
* 每分钟限制请求1次: rate:1, capacity:60, requested:60
|
||||||
|
* 每分钟限制请求10次: rate:1, capacity:60, requested:6
|
||||||
|
* 每小时限制请求1次: rate:1, capacity:3600, requested:3600
|
||||||
|
* 每小时限制请求10次: rate:1, capacity:3600, requested:360
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param key 限流的键
|
||||||
|
* @param rate 令牌桶每秒填充平均速率
|
||||||
|
* @param capacity 令牌桶总容量
|
||||||
|
* @param requested 需要的令牌数
|
||||||
|
* @return 可用令牌数
|
||||||
|
*/
|
||||||
|
public CompletableFuture<Long> rateLimitAsync(String key, long rate, long capacity, long requested);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 令牌桶算法限流, 返回负数表示无令牌, 其他为有令牌
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* 每秒限制请求1次: rate:1, capacity:1, requested:1
|
||||||
|
* 每秒限制请求10次: rate:10, capacity:10, requested:1
|
||||||
|
* 每分钟限制请求1次: rate:1, capacity:60, requested:60
|
||||||
|
* 每分钟限制请求10次: rate:1, capacity:60, requested:6
|
||||||
|
* 每小时限制请求1次: rate:1, capacity:3600, requested:3600
|
||||||
|
* 每小时限制请求10次: rate:1, capacity:3600, requested:360
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param key 限流的键
|
||||||
|
* @param rate 令牌桶每秒填充平均速率
|
||||||
|
* @param capacity 令牌桶总容量
|
||||||
|
* @return 可用令牌数
|
||||||
|
*/
|
||||||
|
default CompletableFuture<Long> rateLimitAsync(String key, long rate, long capacity) {
|
||||||
|
return rateLimitAsync(key, rate, capacity, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------ Lock ------------------------
|
||||||
|
default boolean lock(String key, int expireSeconds) {
|
||||||
|
return setnxexString(key, expireSeconds, "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
default void unlock(String key) {
|
||||||
|
del(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
default CompletableFuture<Boolean> lockAsync(String key, int expireSeconds) {
|
||||||
|
return setnxexStringAsync(key, expireSeconds, "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
default CompletableFuture<Void> unlockAsync(String key) {
|
||||||
|
return delAsync(key).thenApply(v -> null);
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------ 字符串 String ------------------------
|
// ------------------------ 字符串 String ------------------------
|
||||||
default long incr(String key) {
|
default long incr(String key) {
|
||||||
return incrAsync(key).join();
|
return incrAsync(key).join();
|
||||||
@@ -366,49 +468,6 @@ public interface CacheSource extends Resourcable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------ 键 Keys ------------------------
|
// ------------------------ 键 Keys ------------------------
|
||||||
/**
|
|
||||||
* 令牌桶算法限流, 返回负数表示无令牌, 其他为有令牌
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* 每秒限制请求1次: rate:1, capacity:1, requested:1
|
|
||||||
* 每秒限制请求10次: rate:10, capacity:10, requested:1
|
|
||||||
* 每分钟限制请求1次: rate:1, capacity:60, requested:60
|
|
||||||
* 每分钟限制请求10次: rate:1, capacity:60, requested:6
|
|
||||||
* 每小时限制请求1次: rate:1, capacity:3600, requested:3600
|
|
||||||
* 每小时限制请求10次: rate:1, capacity:3600, requested:360
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @param key 限流的键
|
|
||||||
* @param rate 令牌桶每秒填充平均速率
|
|
||||||
* @param capacity 令牌桶总容量
|
|
||||||
* @param requested 需要的令牌数
|
|
||||||
* @return 可用令牌数
|
|
||||||
*/
|
|
||||||
default long rateLimit(String key, long rate, long capacity, long requested) {
|
|
||||||
return rateLimitAsync(key, rate, capacity, requested).join();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 令牌桶算法限流, 返回负数表示无令牌, 其他为有令牌
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* 每秒限制请求1次: rate:1, capacity:1, requested:1
|
|
||||||
* 每秒限制请求10次: rate:10, capacity:10, requested:1
|
|
||||||
* 每分钟限制请求1次: rate:1, capacity:60, requested:60
|
|
||||||
* 每分钟限制请求10次: rate:1, capacity:60, requested:6
|
|
||||||
* 每小时限制请求1次: rate:1, capacity:3600, requested:3600
|
|
||||||
* 每小时限制请求10次: rate:1, capacity:3600, requested:360
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @param key 限流的键
|
|
||||||
* @param rate 令牌桶每秒填充平均速率
|
|
||||||
* @param capacity 令牌桶总容量
|
|
||||||
* @return 可用令牌数
|
|
||||||
*/
|
|
||||||
default long rateLimit(String key, long rate, long capacity) {
|
|
||||||
return rateLimit(key, rate, capacity, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
default long del(String... keys) {
|
default long del(String... keys) {
|
||||||
return delAsync(keys).join();
|
return delAsync(keys).join();
|
||||||
}
|
}
|
||||||
@@ -1360,47 +1419,6 @@ public interface CacheSource extends Resourcable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------ 键 Keys ------------------------
|
// ------------------------ 键 Keys ------------------------
|
||||||
/**
|
|
||||||
* 令牌桶算法限流, 返回负数表示无令牌, 其他为有令牌
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* 每秒限制请求1次: rate:1, capacity:1, requested:1
|
|
||||||
* 每秒限制请求10次: rate:10, capacity:10, requested:1
|
|
||||||
* 每分钟限制请求1次: rate:1, capacity:60, requested:60
|
|
||||||
* 每分钟限制请求10次: rate:1, capacity:60, requested:6
|
|
||||||
* 每小时限制请求1次: rate:1, capacity:3600, requested:3600
|
|
||||||
* 每小时限制请求10次: rate:1, capacity:3600, requested:360
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @param key 限流的键
|
|
||||||
* @param rate 令牌桶每秒填充平均速率
|
|
||||||
* @param capacity 令牌桶总容量
|
|
||||||
* @param requested 需要的令牌数
|
|
||||||
* @return 可用令牌数
|
|
||||||
*/
|
|
||||||
public CompletableFuture<Long> rateLimitAsync(String key, long rate, long capacity, long requested);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 令牌桶算法限流, 返回负数表示无令牌, 其他为有令牌
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* 每秒限制请求1次: rate:1, capacity:1, requested:1
|
|
||||||
* 每秒限制请求10次: rate:10, capacity:10, requested:1
|
|
||||||
* 每分钟限制请求1次: rate:1, capacity:60, requested:60
|
|
||||||
* 每分钟限制请求10次: rate:1, capacity:60, requested:6
|
|
||||||
* 每小时限制请求1次: rate:1, capacity:3600, requested:3600
|
|
||||||
* 每小时限制请求10次: rate:1, capacity:3600, requested:360
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @param key 限流的键
|
|
||||||
* @param rate 令牌桶每秒填充平均速率
|
|
||||||
* @param capacity 令牌桶总容量
|
|
||||||
* @return 可用令牌数
|
|
||||||
*/
|
|
||||||
default CompletableFuture<Long> rateLimitAsync(String key, long rate, long capacity) {
|
|
||||||
return rateLimitAsync(key, rate, capacity, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompletableFuture<Long> delexAsync(String key, String expectedValue);
|
public CompletableFuture<Long> delexAsync(String key, String expectedValue);
|
||||||
|
|
||||||
public CompletableFuture<Long> delAsync(String... keys);
|
public CompletableFuture<Long> delAsync(String... keys);
|
||||||
|
|||||||
Reference in New Issue
Block a user