# dlock **Repository Path**: boylong12/dlock ## Basic Information - **Project Name**: dlock - **Description**: 一个注解即可搞定的分布式锁,使用超级简单 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-20 - **Last Updated**: 2024-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 分布式锁starter >1.一个注解即可搞定的分布式锁,使用超级简单 >2.基于redis实现的非公平锁 --- #### 使用步骤: + 第一步 引入依赖的starter(已上传maven中央仓库) + gradle: ``` compile ("com.github.boylong12:dlock-spring-boot-starter:${dlcok.version}") ``` + maven: ``` com.github.boylong12 dlock-spring-boot-starter ${dlcok.version} ``` + 第二步 启动dlock(两种方式任选) + 通过Enable注解,将```@EnableDlock```注解标注在启动类上 + 通过配置文件,```com.ldcr.dlock.enable=true```写在配置文件中 + 第三步 在需要使用分布式锁的业务方法上标注```@Dlock```注解 ``` @Dlock(keys = "#userId", maxRetry = 1) @Override public String sayHello(String userId) { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } return userId; } ``` + 第四步 配置redis。 ### 使用demo [dlock-demo](dlock-demo) ### 关机时优雅释放锁的说明 + 开启方式(两种方式任选) + 通过注解,将```@EnableDlock(gracefulRelease = true)```注解标注在启动类上 + 通过配置文件,```com.ldcr.dlock.gracefulRelease=true```写在配置文件中 + 使用建议 + 建议在不支持优雅关机的情况下打开 + 在支持优雅关机的情况下慎重打开,因为有些优雅关机的实现方式会导致提前释放锁。 + springboot从2.3.0.RELEASE开始支持优雅关机 --- @Dlock配置说明: |字段|类型|默认值|说明| |:---|:---:|:---:|:---| |keyPreType|KeyPreTypeEnum|KeyPreTypeEnum#PACKAGE|锁名称前缀类型 |keyPre|String|""|锁名称的自定义前缀
只有keyPreType()=KeyPreTypeEnum#CUSTOM时才有效 |keys|String[]|""|锁名称
默认以全类名为前缀
支持spel表达式
eg #user.id| |expire|long|30000|过期时间 单位:毫秒
注意:过期时间一定要大于业务的执行时间| |timeout|long|3000|获取锁的超时时间 单位:毫秒
根据业务确定。由于会阻塞程序执行,不宜设置过长,尤其是在高并发场景下
和maxRetry互斥,两者只会有一个生效
优先级:maxRetry大于timeout| |maxRetry|int|0|获取锁最大重试次数
大于0才生效
根据业务确定。由于会阻塞程序执行,不宜设置过大,尤其是在高并发场景下
和timeout互斥,两者只会有一个生效
优先级:maxRetry大于timeout| @EnableDlock配置说明: |字段|类型|默认值|说明| |:---|:---:|:---:|:---| |gracefulRelease|boolean|false|关机时优雅释放锁标识
建议在不支持优雅关机的情况下打开
在支持优雅关机的情况下慎重打开。因为有可能会提前释放锁
springboot从2.3.0.RELEASE开始支持优雅关机 ### future + 引入其他的实现形式,比如zk(公平锁) + 多种实现形式插件化,支持自主选择