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