From a780dec8d3bbfe717c1e28793f99e1efe3dafc8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E8=8B=B1=E6=9D=B0?= <327782001@qq.com> Date: Tue, 12 Sep 2023 17:27:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E9=9C=80=E6=B1=82=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kwan/springbootkwan/aop/RedisLockAspect.java | 2 +- .../com/kwan/springbootkwan/schedule/RedisLockRenewal.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/kwan/springbootkwan/aop/RedisLockAspect.java b/src/main/java/com/kwan/springbootkwan/aop/RedisLockAspect.java index 654b290..986784d 100644 --- a/src/main/java/com/kwan/springbootkwan/aop/RedisLockAspect.java +++ b/src/main/java/com/kwan/springbootkwan/aop/RedisLockAspect.java @@ -41,7 +41,7 @@ public class RedisLockAspect { if (locked) { if (StringUtils.hasText(lockKey)) { redisTemplate.opsForValue().set(lockKey, "locked", redisLock.expire(), TimeUnit.MILLISECONDS); - redisLockRenewal.scheduleRenewal(lock, lockKey, 20000, redisLock.expire()); + redisLockRenewal.scheduleRenewal(lock, redisLock, 20000); } return joinPoint.proceed(); } else { diff --git a/src/main/java/com/kwan/springbootkwan/schedule/RedisLockRenewal.java b/src/main/java/com/kwan/springbootkwan/schedule/RedisLockRenewal.java index aa62c3b..47a097a 100644 --- a/src/main/java/com/kwan/springbootkwan/schedule/RedisLockRenewal.java +++ b/src/main/java/com/kwan/springbootkwan/schedule/RedisLockRenewal.java @@ -1,5 +1,6 @@ package com.kwan.springbootkwan.schedule; +import com.kwan.springbootkwan.annotation.RedisLock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; @@ -22,13 +23,13 @@ public class RedisLockRenewal { this.redisTemplate = redisTemplate; } - public void scheduleRenewal(Lock lock, String lockKey, long renewalIntervalMillis, long lockExpireMillis) { + public void scheduleRenewal(Lock lock, RedisLock redisLock, long renewalIntervalMillis) { scheduler.scheduleAtFixedRate(() -> { try { - boolean locked = lock.tryLock(lockExpireMillis, TimeUnit.MILLISECONDS); + boolean locked = lock.tryLock(redisLock.timeout(), TimeUnit.MILLISECONDS); if (locked) { // 续期操作:设置新的过期时间 - redisTemplate.expire(lockKey, lockExpireMillis, TimeUnit.MILLISECONDS); + redisTemplate.expire(redisLock.key(), redisLock.expire(), TimeUnit.MILLISECONDS); } } catch (Exception e) { // 处理续期失败的情况,可以记录日志或采取其他操作 -- GitLab