From 9b37acb26f5941ec3b119fac14778e9488ecf426 Mon Sep 17 00:00:00 2001 From: "xuguang.chen" Date: Thu, 4 Mar 2021 14:31:16 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9ERedis=E5=88=86?= =?UTF-8?q?=E5=B8=83=E5=BC=8F=E9=94=81;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +++ ruoyi-common/ruoyi-common-redis/pom.xml | 7 +- .../ruoyi/common/redis/service/RedisLock.java | 64 +++++++++++++++++++ .../main/resources/META-INF/spring.factories | 3 +- 4 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisLock.java diff --git a/pom.xml b/pom.xml index 292ae495..9eba5d24 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,7 @@ 8.0.3 4.1.2 2.6.2 + 3.14.1 @@ -213,6 +214,13 @@ ruoyi-api-system ${ruoyi.version} + + + + org.redisson + redisson-spring-boot-starter + 3.14.0 + diff --git a/ruoyi-common/ruoyi-common-redis/pom.xml b/ruoyi-common/ruoyi-common-redis/pom.xml index e498f15b..0e6457dd 100644 --- a/ruoyi-common/ruoyi-common-redis/pom.xml +++ b/ruoyi-common/ruoyi-common-redis/pom.xml @@ -22,7 +22,12 @@ org.springframework.boot spring-boot-starter-data-redis - + + + org.redisson + redisson-spring-boot-starter + + com.ruoyi diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisLock.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisLock.java new file mode 100644 index 00000000..b4209c80 --- /dev/null +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisLock.java @@ -0,0 +1,64 @@ +package com.ruoyi.common.redis.service; + +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import java.util.concurrent.TimeUnit; + +/** + * redis锁工具类 + * + * @author Mask + */ +@Component +public class RedisLock +{ + + @Autowired + private RedissonClient redissonClient; + + /** + * 获取锁对象,加锁前需要先获取此对象 + * @param lockKey + * @return + */ + public RLock getLock(String lockKey) + { + return redissonClient.getLock(lockKey); + } + + /** + * 尝试加锁(续命锁) + * @param rLock + * @param waitTime 加锁等待时间, 超时会返回false + * @return + * @throws InterruptedException + */ + public boolean tryLock(RLock rLock, long waitTime) throws InterruptedException + { + return rLock.tryLock(waitTime, TimeUnit.SECONDS); + } + + /** + * 尝试加锁(自动释放锁) + * @param rLock + * @param waitTime 加锁等待时间, 超时会返回false + * @param releaseTime 锁释放时间,上锁releaseTime秒后自动释放锁 + * @return + * @throws InterruptedException + */ + public boolean tryAutoReleaseLock(RLock rLock, long waitTime, long releaseTime) throws InterruptedException + { + return rLock.tryLock(waitTime, releaseTime, TimeUnit.SECONDS); + } + + /** + * 释放锁 + */ + public void unlock(RLock rLock) + { + rLock.unlock(); + } + +} diff --git a/ruoyi-common/ruoyi-common-redis/src/main/resources/META-INF/spring.factories b/ruoyi-common/ruoyi-common-redis/src/main/resources/META-INF/spring.factories index 60d1d47b..0d38498e 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/resources/META-INF/spring.factories +++ b/ruoyi-common/ruoyi-common-redis/src/main/resources/META-INF/spring.factories @@ -1,5 +1,6 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.ruoyi.common.redis.configure.RedisConfig,\ - com.ruoyi.common.redis.service.RedisService + com.ruoyi.common.redis.service.RedisService,\ + com.ruoyi.common.redis.service.RedisLock