Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Kwan的解忧杂货铺@新空间代码工作室
SpringBoot-kwan
提交
a780dec8
S
SpringBoot-kwan
项目概览
Kwan的解忧杂货铺@新空间代码工作室
/
SpringBoot-kwan
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SpringBoot-kwan
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a780dec8
编写于
9月 12, 2023
作者:
Kwan的解忧杂货铺@新空间代码工作室
🐭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:需求代码
上级
a0b786ac
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
5 addition
and
4 deletion
+5
-4
src/main/java/com/kwan/springbootkwan/aop/RedisLockAspect.java
...ain/java/com/kwan/springbootkwan/aop/RedisLockAspect.java
+1
-1
src/main/java/com/kwan/springbootkwan/schedule/RedisLockRenewal.java
...va/com/kwan/springbootkwan/schedule/RedisLockRenewal.java
+4
-3
未找到文件。
src/main/java/com/kwan/springbootkwan/aop/RedisLockAspect.java
浏览文件 @
a780dec8
...
@@ -41,7 +41,7 @@ public class RedisLockAspect {
...
@@ -41,7 +41,7 @@ public class RedisLockAspect {
if
(
locked
)
{
if
(
locked
)
{
if
(
StringUtils
.
hasText
(
lockKey
))
{
if
(
StringUtils
.
hasText
(
lockKey
))
{
redisTemplate
.
opsForValue
().
set
(
lockKey
,
"locked"
,
redisLock
.
expire
(),
TimeUnit
.
MILLISECONDS
);
redisTemplate
.
opsForValue
().
set
(
lockKey
,
"locked"
,
redisLock
.
expire
(),
TimeUnit
.
MILLISECONDS
);
redisLockRenewal
.
scheduleRenewal
(
lock
,
lockKey
,
20000
,
redisLock
.
expire
()
);
redisLockRenewal
.
scheduleRenewal
(
lock
,
redisLock
,
20000
);
}
}
return
joinPoint
.
proceed
();
return
joinPoint
.
proceed
();
}
else
{
}
else
{
...
...
src/main/java/com/kwan/springbootkwan/schedule/RedisLockRenewal.java
浏览文件 @
a780dec8
package
com.kwan.springbootkwan.schedule
;
package
com.kwan.springbootkwan.schedule
;
import
com.kwan.springbootkwan.annotation.RedisLock
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -22,13 +23,13 @@ public class RedisLockRenewal {
...
@@ -22,13 +23,13 @@ public class RedisLockRenewal {
this
.
redisTemplate
=
redisTemplate
;
this
.
redisTemplate
=
redisTemplate
;
}
}
public
void
scheduleRenewal
(
Lock
lock
,
String
lockKey
,
long
renewalIntervalMillis
,
long
lockExpire
Millis
)
{
public
void
scheduleRenewal
(
Lock
lock
,
RedisLock
redisLock
,
long
renewalInterval
Millis
)
{
scheduler
.
scheduleAtFixedRate
(()
->
{
scheduler
.
scheduleAtFixedRate
(()
->
{
try
{
try
{
boolean
locked
=
lock
.
tryLock
(
lockExpireMillis
,
TimeUnit
.
MILLISECONDS
);
boolean
locked
=
lock
.
tryLock
(
redisLock
.
timeout
()
,
TimeUnit
.
MILLISECONDS
);
if
(
locked
)
{
if
(
locked
)
{
// 续期操作:设置新的过期时间
// 续期操作:设置新的过期时间
redisTemplate
.
expire
(
lockKey
,
lockExpireMillis
,
TimeUnit
.
MILLISECONDS
);
redisTemplate
.
expire
(
redisLock
.
key
(),
redisLock
.
expire
()
,
TimeUnit
.
MILLISECONDS
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
// 处理续期失败的情况,可以记录日志或采取其他操作
// 处理续期失败的情况,可以记录日志或采取其他操作
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录