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