mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-20 02:08:15 +08:00
redis脚本问题修复
This commit is contained in:
parent
783a3f9946
commit
e4ed70ee7e
@ -89,12 +89,17 @@ public class RedisConfig extends CachingConfigurerSupport {
|
||||
.append("local key = KEYS[1]\n")
|
||||
.append("local count = tonumber(ARGV[1])\n")
|
||||
.append("local time = tonumber(ARGV[2])\n")
|
||||
.append("local current = redis.call('get', key);\n")
|
||||
.append("if current and tonumber(current) > count then\n")
|
||||
.append("local current = tonumber(redis.call('get', key));\n")
|
||||
.append("if current == nil then\n")
|
||||
.append(" current = 1 \n")
|
||||
.append("end\n")
|
||||
//.append("redis.log(redis.LOG_WARNING, \"current \" .. current)\n")
|
||||
.append("if current > count then\n")
|
||||
.append(" return current;\n")
|
||||
.append("end\n")
|
||||
.append("current = redis.call('incr', key)\n")
|
||||
.append("if tonumber(current) == 1 then\n")
|
||||
.append("current = tonumber(redis.call('incr', key))\n")
|
||||
//.append("redis.log(redis.LOG_WARNING, \"current \" .. current)\n")
|
||||
.append("if current == 1 then\n")
|
||||
.append(" redis.call('expire', key, time)\n")
|
||||
.append("end\n")
|
||||
.append("return current;")
|
||||
|
||||
@ -289,8 +289,7 @@ public class CustomerGlobalFilter implements GlobalFilter, Ordered {
|
||||
private <T> Mono<T> rateLimiter(ServerWebExchange exchange, IscRule rule, Route route, final int index,
|
||||
Supplier<Mono<T>> rateLimiterAfterSupplier) {
|
||||
final TimeUnit timeUnit = TIME_UNITS[index];
|
||||
final Long limit = TimeUnit.SECONDS.equals(timeUnit) ? rule.getSecondsLimit() :
|
||||
TimeUnit.MINUTES.equals(timeUnit)
|
||||
final Long limit = TimeUnit.SECONDS.equals(timeUnit) ? rule.getSecondsLimit() : TimeUnit.MINUTES.equals(timeUnit)
|
||||
? rule.getMinutesLimit() : TimeUnit.HOURS.equals(timeUnit) ? rule.getHoursLimit() : rule.getDaysLimit();
|
||||
if (Objects.isNull(limit) || limit <= 0L) {
|
||||
if (TimeUnit.DAYS.equals(timeUnit)) {
|
||||
|
||||
@ -149,7 +149,7 @@ public class CustomerRedisRateLimiter extends RedisRateLimiter {
|
||||
}
|
||||
return Mono.just(-1L);
|
||||
}).map(tokensLeft -> {
|
||||
boolean allowed = tokensLeft < replenishRate;
|
||||
boolean allowed = tokensLeft > 0 && tokensLeft < replenishRate;
|
||||
Response response = new Response(allowed, getHeaders(routeConfig, tokensLeft, timeUnit));
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("response: " + response);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user