You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package com.example.demo.Util;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component public class RedisLockUtil {
@Autowired private StringRedisTemplate redisTemplate;
/** * 尝试获取分布式锁 * @param lockKey 锁的 Key * @param requestId 请求 ID(可用 UUID) * @param expireTime 锁的过期时间(毫秒) * @return 是否获取成功 */ public boolean tryLock(String lockKey, String requestId, long expireTime) { return redisTemplate.opsForValue().setIfAbsent(lockKey, requestId, expireTime, TimeUnit.MILLISECONDS); }
/** * 释放分布式锁 * @param lockKey 锁的 Key * @param requestId 请求 ID */ public void unlock(String lockKey, String requestId) { String currentValue = redisTemplate.opsForValue().get(lockKey); if (requestId.equals(currentValue)) { redisTemplate.delete(lockKey); } } }
|