如何用Redlock实现分布式锁

2025-05-19 19:09:44
推荐回答(1个)
回答(1):

在pom文件引入redis和redisson依赖:


org.springframework.boot
spring-boot-starter-data-redis



org.redisson
redisson
3.3.2

123456789101112123456789101112

AquiredLockWorker接口类,,主要是用于获取锁后需要处理的逻辑:
/**
* Created by fangzhipeng on 2017/4/5.
* 获取锁后需要处理的逻辑
*/
public interface AquiredLockWorker {
T invokeAfterLockAquire() throws Exception;
}
1234567812345678

DistributedLocker 获取锁管理类:

/**
* Created by fangzhipeng on 2017/4/5.
* 获取锁管理类
*/
public interface DistributedLocker {

/**
* 获取锁
* @param resourceName 锁的名称
* @param worker 获取锁后的处理类
* @param
* @return 处理完具体的业务逻辑要返回的数据
* @throws UnableToAquireLockException
* @throws Exception
*/
T lock(String resourceName, AquiredLockWorker worker) throws UnableToAquireLockException, Exception;

T lock(String resourceName, AquiredLockWorker worker, int lockTime) throws UnableToAquireLockException, Exception;

}