From 4286f16974fc7938bcdd370975c1210008463ed6 Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Tue, 27 May 2025 10:32:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20RateIntervalUnit=20=E5=B7=B2=E8=BF=87?= =?UTF-8?q?=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ratelimiter/core/redis/RateLimiterRedisDAO.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/ratelimiter/core/redis/RateLimiterRedisDAO.java b/yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/ratelimiter/core/redis/RateLimiterRedisDAO.java index 18c30682e5..2bcce377f0 100644 --- a/yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/ratelimiter/core/redis/RateLimiterRedisDAO.java +++ b/yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/ratelimiter/core/redis/RateLimiterRedisDAO.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.ratelimiter.core.redis; import lombok.AllArgsConstructor; import org.redisson.api.*; +import java.time.Duration; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -40,11 +41,13 @@ public class RateLimiterRedisDAO { String redisKey = formatKey(key); RRateLimiter rateLimiter = redissonClient.getRateLimiter(redisKey); long rateInterval = timeUnit.toSeconds(time); + Duration duration = Duration.ofSeconds(rateInterval); // 1. 如果不存在,设置 rate 速率 RateLimiterConfig config = rateLimiter.getConfig(); if (config == null) { - rateLimiter.trySetRate(RateType.OVERALL, count, rateInterval, RateIntervalUnit.SECONDS); - rateLimiter.expire(rateInterval, TimeUnit.SECONDS); // 原因参见 https://t.zsxq.com/lcR0W + rateLimiter.trySetRate(RateType.OVERALL, count, duration); + // 原因参见 https://t.zsxq.com/lcR0W + rateLimiter.expire(duration); return rateLimiter; } // 2. 如果存在,并且配置相同,则直接返回 @@ -54,8 +57,9 @@ public class RateLimiterRedisDAO { return rateLimiter; } // 3. 如果存在,并且配置不同,则进行新建 - rateLimiter.setRate(RateType.OVERALL, count, rateInterval, RateIntervalUnit.SECONDS); - rateLimiter.expire(rateInterval, TimeUnit.SECONDS); // 原因参见 https://t.zsxq.com/lcR0W + rateLimiter.setRate(RateType.OVERALL, count, duration); + // 原因参见 https://t.zsxq.com/lcR0W + rateLimiter.expire(duration); return rateLimiter; }