From 4cc1962f5250aecba2d8d0f603825871c587348e Mon Sep 17 00:00:00 2001 From: ray <1490493387@qq.com> Date: Mon, 19 Aug 2024 00:25:41 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20redis=20key=E5=B8=B8=E9=87=8F?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=91=BD=E5=90=8D=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/RedisConstants.java | 43 +++++++++++++++++++ .../common/constant/RedisKeyConstants.java | 25 ----------- .../system/filter/RedisRateLimiterFilter.java | 9 ++-- 3 files changed, 47 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/youlai/system/common/constant/RedisConstants.java delete mode 100644 src/main/java/com/youlai/system/common/constant/RedisKeyConstants.java diff --git a/src/main/java/com/youlai/system/common/constant/RedisConstants.java b/src/main/java/com/youlai/system/common/constant/RedisConstants.java new file mode 100644 index 00000000..056d6549 --- /dev/null +++ b/src/main/java/com/youlai/system/common/constant/RedisConstants.java @@ -0,0 +1,43 @@ +package com.youlai.system.common.constant; + +/** + * Redis Key常量 + * + * @author Theo + * @since 2024-7-29 11:46:08 + */ +public interface RedisConstants { + + /** + * 系统配置Redis-key + */ + String SYSTEM_CONFIG_KEY = "system:config"; + + /** + * IP限流Redis-key + */ + String IP_RATE_LIMITER_KEY = "ip:rate:limiter:"; + + /** + * 防重复提交Redis-key + */ + String RESUBMIT_LOCK_PREFIX = "resubmit:lock:"; + + /** + * 单个IP请求的最大每秒查询数(QPS)阈值Key + */ + String IP_QPS_THRESHOLD_LIMIT_KEY = "IP_QPS_THRESHOLD_LIMIT"; + + /** + * 手机验证码缓存前缀 + */ + + String MOBILE_VERIFICATION_CODE_PREFIX = "VERIFICATION_CODE:MOBILE:"; + + + /** + * 邮箱验证码缓存前缀 + */ + String EMAIL_VERIFICATION_CODE_PREFIX = "VERIFICATION_CODE:EMAIL:"; + +} diff --git a/src/main/java/com/youlai/system/common/constant/RedisKeyConstants.java b/src/main/java/com/youlai/system/common/constant/RedisKeyConstants.java deleted file mode 100644 index f26f3b40..00000000 --- a/src/main/java/com/youlai/system/common/constant/RedisKeyConstants.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.youlai.system.common.constant; - -/** - * Redis Key常量 - * - * @author Theo - * @since 2024-7-29 11:46:08 - */ -public interface RedisKeyConstants { - - /** - * 系统配置Redis-key - */ - String SYSTEM_CONFIG_KEY = "system:config"; - - /** - * IP限流Redis-key - */ - String IP_RATE_LIMITER_KEY = "ip:rate:limiter:"; - - /** - * 防重复提交Redis-key - */ - String RESUBMIT_LOCK_PREFIX = "resubmit:lock:"; -} diff --git a/src/main/java/com/youlai/system/filter/RedisRateLimiterFilter.java b/src/main/java/com/youlai/system/filter/RedisRateLimiterFilter.java index d3d7a1aa..30ff59a0 100644 --- a/src/main/java/com/youlai/system/filter/RedisRateLimiterFilter.java +++ b/src/main/java/com/youlai/system/filter/RedisRateLimiterFilter.java @@ -1,7 +1,6 @@ package com.youlai.system.filter; -import com.youlai.system.common.constant.RedisKeyConstants; -import com.youlai.system.common.constant.SystemConstants; +import com.youlai.system.common.constant.RedisConstants; import com.youlai.system.common.result.ResultCode; import com.youlai.system.service.SysConfigService; import com.youlai.system.util.IPUtils; @@ -44,18 +43,18 @@ public class RedisRateLimiterFilter extends OncePerRequestFilter { * @return 是否限流 */ public boolean rateLimit(String ip) { - String key = RedisKeyConstants.IP_RATE_LIMITER_KEY + ip; + String key = RedisConstants.IP_RATE_LIMITER_KEY + ip; Long count = redisTemplate.opsForValue().increment(key); if (count == null || count == 1) { redisTemplate.expire(key,1, TimeUnit.SECONDS); } - Object systemConfig = sysConfigService.getSystemConfig(SystemConstants.IP_QPS_THRESHOLD_LIMIT_KEY); + Object systemConfig = sysConfigService.getSystemConfig(RedisConstants.IP_QPS_THRESHOLD_LIMIT_KEY); long limit = 10; if(systemConfig != null){ limit = Long.parseLong(systemConfig.toString()); }else{ log.warn("[RedisRateLimiterFilter.rateLimit]系统配置中未配置IP请求限制QPS阈值配置,使用默认值:{},请检查配置项:{}", - limit,SystemConstants.IP_QPS_THRESHOLD_LIMIT_KEY); + limit,RedisConstants.IP_QPS_THRESHOLD_LIMIT_KEY); } return count != null && count > limit; }