فهرست منبع

update 优化 RedisUtils 重构过期方法

疯狂的狮子Li 4 سال پیش
والد
کامیت
7303af9621

+ 2 - 2
ruoyi-auth/src/main/java/com/ruoyi/auth/listener/UserActionListener.java

@@ -19,7 +19,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
-import java.util.concurrent.TimeUnit;
+import java.time.Duration;
 
 /**
  * 用户行为 侦听器的实现
@@ -55,7 +55,7 @@ public class UserActionListener implements SaTokenListener {
             if (ObjectUtil.isNotNull(user.getDeptName())) {
                 userOnline.setDeptName(user.getDeptName());
             }
-            RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, userOnline, tokenConfig.getTimeout(), TimeUnit.SECONDS);
+            RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, userOnline, Duration.ofSeconds(tokenConfig.getTimeout()));
             log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue);
         } else if (userType == UserType.APP_USER) {
             // app端 自行根据业务编写

+ 2 - 2
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java

@@ -24,7 +24,7 @@ import com.ruoyi.system.api.model.XcxLoginUser;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
 
-import java.util.concurrent.TimeUnit;
+import java.time.Duration;
 import java.util.function.Supplier;
 
 /**
@@ -156,7 +156,7 @@ public class SysLoginService {
             errorNumber = ObjectUtil.isNull(errorNumber) ? 1 : errorNumber + 1;
             // 达到规定错误次数 则锁定登录
             if (errorNumber.equals(setErrorNumber)) {
-                RedisUtils.setCacheObject(errorKey, errorNumber, errorLimitTime, TimeUnit.MINUTES);
+                RedisUtils.setCacheObject(errorKey, errorNumber, Duration.ofMinutes(errorLimitTime));
                 recordLogininfor(username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), errorLimitTime));
                 throw new UserException(loginType.getRetryLimitExceed(), errorLimitTime);
             } else {

+ 2 - 2
ruoyi-common/ruoyi-common-idempotent/src/main/java/com/ruoyi/common/idempotent/aspectj/RepeatSubmitAspect.java

@@ -22,9 +22,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.time.Duration;
 import java.util.Collection;
 import java.util.Map;
-import java.util.concurrent.TimeUnit;
 
 /**
  * 防止重复提交(参考美团GTIS防重系统)
@@ -58,7 +58,7 @@ public class RepeatSubmitAspect {
         String cacheRepeatKey = Constants.REPEAT_SUBMIT_KEY + url + submitKey;
         String key = RedisUtils.getCacheObject(cacheRepeatKey);
         if (key == null) {
-            RedisUtils.setCacheObject(cacheRepeatKey, "", interval, TimeUnit.MILLISECONDS);
+            RedisUtils.setCacheObject(cacheRepeatKey, "", Duration.ofMillis(interval));
             KEY_CACHE.set(cacheRepeatKey);
         } else {
             String message = repeatSubmit.message();

+ 10 - 12
ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/utils/RedisUtils.java

@@ -6,11 +6,11 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.redisson.api.*;
 
+import java.time.Duration;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 
 /**
@@ -107,7 +107,7 @@ public class RedisUtils {
             } catch (Exception e) {
                 long timeToLive = bucket.remainTimeToLive();
                 bucket.set(value);
-                bucket.expire(timeToLive, TimeUnit.MILLISECONDS);
+                bucket.expire(Duration.ofMillis(timeToLive));
             }
         } else {
             bucket.set(value);
@@ -119,13 +119,12 @@ public class RedisUtils {
      *
      * @param key      缓存的键值
      * @param value    缓存的值
-     * @param timeout  时间
-     * @param timeUnit 时间颗粒度
+     * @param duration 时间
      */
-    public static <T> void setCacheObject(final String key, final T value, final long timeout, final TimeUnit timeUnit) {
+    public static <T> void setCacheObject(final String key, final T value, final Duration duration) {
         RBucket<T> result = CLIENT.getBucket(key);
         result.set(value);
-        result.expire(timeout, timeUnit);
+        result.expire(duration);
     }
 
     /**
@@ -149,20 +148,19 @@ public class RedisUtils {
      * @return true=设置成功;false=设置失败
      */
     public static boolean expire(final String key, final long timeout) {
-        return expire(key, timeout, TimeUnit.SECONDS);
+        return expire(key, Duration.ofSeconds(timeout));
     }
 
     /**
      * 设置有效时间
      *
-     * @param key     Redis键
-     * @param timeout 超时时间
-     * @param unit    时间单位
+     * @param key      Redis键
+     * @param duration 超时时间
      * @return true=设置成功;false=设置失败
      */
-    public static boolean expire(final String key, final long timeout, final TimeUnit unit) {
+    public static boolean expire(final String key, final Duration duration) {
         RBucket rBucket = CLIENT.getBucket(key);
-        return rBucket.expire(timeout, unit);
+        return rBucket.expire(duration);
     }
 
     /**

+ 5 - 5
ruoyi-common/ruoyi-common-satoken/src/main/java/com/ruoyi/common/satoken/core/dao/PlusSaTokenDao.java

@@ -5,10 +5,10 @@ import cn.dev33.satoken.util.SaFoxUtil;
 import com.ruoyi.common.redis.utils.RedisUtils;
 import org.springframework.stereotype.Component;
 
+import java.time.Duration;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Sa-Token持久层接口(使用框架自带RedisUtils实现 协议统一)
@@ -38,7 +38,7 @@ public class PlusSaTokenDao implements SaTokenDao {
         if (timeout == SaTokenDao.NEVER_EXPIRE) {
             RedisUtils.setCacheObject(key, value);
         } else {
-            RedisUtils.setCacheObject(key, value, timeout, TimeUnit.SECONDS);
+            RedisUtils.setCacheObject(key, value, Duration.ofSeconds(timeout));
         }
     }
 
@@ -87,7 +87,7 @@ public class PlusSaTokenDao implements SaTokenDao {
             }
             return;
         }
-        RedisUtils.expire(key, timeout, TimeUnit.SECONDS);
+        RedisUtils.expire(key, Duration.ofSeconds(timeout));
     }
 
 
@@ -111,7 +111,7 @@ public class PlusSaTokenDao implements SaTokenDao {
         if (timeout == SaTokenDao.NEVER_EXPIRE) {
             RedisUtils.setCacheObject(key, object);
         } else {
-            RedisUtils.setCacheObject(key, object, timeout, TimeUnit.SECONDS);
+            RedisUtils.setCacheObject(key, object, Duration.ofSeconds(timeout));
         }
     }
 
@@ -160,7 +160,7 @@ public class PlusSaTokenDao implements SaTokenDao {
             }
             return;
         }
-        RedisUtils.expire(key, timeout, TimeUnit.SECONDS);
+        RedisUtils.expire(key, Duration.ofSeconds(timeout));
     }
 
 

+ 2 - 2
ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java

@@ -19,9 +19,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.TimeUnit;
 
 /**
  * 验证码实现处理
@@ -57,7 +57,7 @@ public class ValidateCodeServiceImpl implements ValidateCodeService {
         captcha.setGenerator(codeGenerator);
         captcha.createCode();
         String code = isMath ? getCodeResult(captcha.getCode()) : captcha.getCode();
-        RedisUtils.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
+        RedisUtils.setCacheObject(verifyKey, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
         ajax.put("uuid", uuid);
         ajax.put("img", captcha.getImageBase64());
         return R.ok(ajax);