# distributed-lock
**Repository Path**: gengwei_940116/distributed-lock
## Basic Information
- **Project Name**: distributed-lock
- **Description**: No description available
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-05-24
- **Last Updated**: 2021-05-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# distributed-lock
基于redisson分布式锁 介绍
使用说明:
1. 基于redisson,springboot开发
2. 基于spring aop功能,优先级高于事务切面,保证在事务完成后释放锁
3. 锁名称基于spel,可根据方法入参解析得到最终锁名称
4. redis配置,spring.redisson配置 -> spring.redis -> 默认配置
第一步:在pom加入依赖
```
com.minivision
distributed-lock
0.0.1-SNAPSHOT
```
第二步:在启动类上加入注解
```
@SpringBootApplication
@EnableDistributedLock
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
第三步:yml中配置redis
```
# common spring boot settings
spring:
redis:
database:
host:
port:
password:
ssl:
timeout:
cluster:
nodes:
sentinel:
master:
nodes:
# Redisson settings
#path to config - redisson.yaml
redisson:
file: classpath:redisson.yaml
config: |
clusterServersConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
failedSlaveReconnectionInterval: 3000
failedSlaveCheckInterval: 60000
password: null
subscriptionsPerConnection: 5
clientName: null
loadBalancer: ! {}
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
slaveConnectionMinimumIdleSize: 24
slaveConnectionPoolSize: 64
masterConnectionMinimumIdleSize: 24
masterConnectionPoolSize: 64
readMode: "SLAVE"
subscriptionMode: "SLAVE"
nodeAddresses:
- "redis://127.0.0.1:7004"
- "redis://127.0.0.1:7001"
- "redis://127.0.0.1:7000"
scanInterval: 1000
pingConnectionInterval: 0
keepAlive: false
tcpNoDelay: false
threads: 16
nettyThreads: 32
codec: ! {}
transportMode: "NIO"
```
第四步:在方法上加注解
```
@Service
@Slf4j
public class LockService {
@DistributedLock(namespace = "TEST-DISTRIBUTED-LOCK-", lockName = "#lockDTO.id + '_' + #lockDTO.name", lockType = LockTypeEnum.READ_LOCK)
public String say(LockDTO lockDTO) {
log.info("lockDTO:{}", lockDTO);
try {
Thread.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "hello world!";
}
}
```