refactor: redis key常量文件命名规范
This commit is contained in:
@@ -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:";
|
||||
|
||||
}
|
||||
@@ -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:";
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user