|
@@ -20,6 +20,12 @@ public class RedisUtil {
|
|
|
return Boolean.TRUE.equals(lockAcquired);
|
|
|
}
|
|
|
|
|
|
+ public boolean tryAcquireLock(String lockKey, String requestId, Long time) {
|
|
|
+ // 尝试获取锁
|
|
|
+ Boolean lockAcquired = redisTemplate.opsForValue().setIfAbsent(lockKey, requestId, time, TimeUnit.SECONDS);
|
|
|
+ return Boolean.TRUE.equals(lockAcquired);
|
|
|
+ }
|
|
|
+
|
|
|
public void releaseLock(String lockKey, String requestId) {
|
|
|
// 使用 Lua 脚本确保释放锁的原子性
|
|
|
String script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
|