From c8fba69fa3c55036e45c177a744674dd1b0df927 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 19 Sep 2025 22:08:17 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2-10' into 2-10

---
 src/main/java/com/nq/common/RedisLockService.java |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/nq/common/RedisLockService.java b/src/main/java/com/nq/common/RedisLockService.java
new file mode 100644
index 0000000..4a7695d
--- /dev/null
+++ b/src/main/java/com/nq/common/RedisLockService.java
@@ -0,0 +1,40 @@
+package com.nq.common;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class RedisLockService {
+
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+
+    /**
+     * 尝试获取分布式锁
+     *
+     * @param key    锁的key
+     * @param value  锁的value(可以使用UUID,这里简单使用固定值)
+     * @param expire 锁的过期时间,单位秒
+     * @return 是否获取成功
+     */
+    public boolean tryLock(String key, String value, long expire) {
+        Boolean result = redisTemplate.opsForValue().setIfAbsent(key, value, expire, TimeUnit.SECONDS);
+        return Boolean.TRUE.equals(result);
+    }
+
+    /**
+     * 释放分布式锁
+     *
+     * @param key   锁的key
+     * @param value 锁的value
+     */
+    public void unlock(String key, String value) {
+        String currentValue = redisTemplate.opsForValue().get(key);
+        if (currentValue != null && currentValue.equals(value)) {
+            redisTemplate.delete(key);
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3