public class RedisDistributedLock { private final RedisTemplate<String, String> redisTemplate; private final ValueOperations<String, String> valueOperations; public RedisDistributedLock(RedisTemplate<String, String> redisTemplate) { this.redisTemplate = redisTemplate; this.valueOperations = redisTemplate.opsForValue(); } public boolean acquireLock(String lockKey, long expireTime) { Boolean result = valueOperations.setIfAbsent(lockKey, "locked"); if (result != null && result) { redisTemplate.expire(lockKey, expireTime, TimeUnit.MILLISECONDS); return true; } return false; } public void releaseLock(String lockKey) { redisTemplate.delete(lockKey); } } @Service public class MyService { @Autowired private RedisDistributedLock distributedLock; public void myMethod() { boolean lockAcquired = distributedLock.acquireLock("myLock", 5000); if (lockAcquired) { try { } finally { distributedLock.releaseLock("myLock"); } } else { } } }


上一篇:
下一篇:
切换中文