From e8428af781f6cd8f0360aace90ba2e7eddb98033 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 22 四月 2025 10:35:22 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/utils/RedisUtil.java | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/common/utils/RedisUtil.java b/src/main/java/com/zy/common/utils/RedisUtil.java
index 95da6dc..95ab170 100644
--- a/src/main/java/com/zy/common/utils/RedisUtil.java
+++ b/src/main/java/com/zy/common/utils/RedisUtil.java
@@ -1,5 +1,6 @@
package com.zy.common.utils;
+import com.baomidou.mybatisplus.toolkit.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
@@ -25,8 +26,30 @@
@Autowired
private RedisTemplate redisTemplate;
+ @Autowired
+ private StringRedisTemplate stringRedisTemplate;
+
+ private static final String LOCK_PREFIX = "lock:";
+ private static final long DEFAULT_EXPIRE_TIME = 10; // 榛樿閿佽繃鏈熸椂闂达紝鍗曚綅涓哄垎閽�
+
public RedisUtil(RedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
+ }
+
+ /**
+ * Redis鍔犻攣鐨勬搷浣�
+ */
+ public Boolean tryLock(String key) {
+ String redisKey = LOCK_PREFIX + key;
+ return redisTemplate.opsForValue().setIfAbsent(redisKey, "locked", DEFAULT_EXPIRE_TIME, TimeUnit.MINUTES);
+ }
+
+ /**
+ * Redis瑙i攣鐨勬搷浣�
+ */
+ public void unlock(String lockKey) {
+ String redisKey = LOCK_PREFIX + lockKey;
+ redisTemplate.delete(redisKey);
}
/**
@@ -126,6 +149,17 @@
public boolean set(String key, Object value) {
try {
redisTemplate.opsForValue().set(key, value);
+ long start = System.currentTimeMillis();
+ while (System.currentTimeMillis() - start < 10000) {//鏈夋晥鏈�10s
+ Object o = redisTemplate.opsForValue().get(key);
+ if (o == null) {
+ continue;
+ }
+
+ if (o.equals(value)) {
+ break;
+ }
+ }
return true;
} catch (Exception e) {
e.printStackTrace();
--
Gitblit v1.9.1