# lock-spring-boot-starter **Repository Path**: tooleek/lock-spring-boot-starter ## Basic Information - **Project Name**: lock-spring-boot-starter - **Description**: 一款基于Spring Boot , 用起来还挺顺手的分布式锁 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://tooleek.gitee.io/lock-spring-boot-starter/ - **GVP Project**: No ## Statistics - **Stars**: 298 - **Forks**: 92 - **Created**: 2018-12-20 - **Last Updated**: 2025-02-20 ## Categories & Tags **Categories**: distributed-service **Tags**: None ## README # lock-spring-boot-starter #### 介绍 一款基于 Spring Boot Starter 机制的分布式锁框架,实现了redis和zookeeper两种模式的分布式锁功能,以注解的方式(@RLock和@ZLock)对方法进行加锁操作,零代码实现业务加锁能力,涵盖各种加锁方式,并支持redis和zookeeper的集群。 #### 使用说明 1. 创建Spring Boot项目 2. 引入maven依赖 ``` io.gitee.tooleek lock-spring-boot-starter 1.2.0 ``` 3. 在Spring Boot的项目配置文件application.yml中添加相应的配置,如: ``` lock-config: lock-scheme: redis #锁的实现方式,支持两种:redis、zookeeper redis: #lock-scheme配置为redis时,需要配置该参数 pattern: single #redis模式配置,single:单机模式,cluster:集群模式,replicated:云托管模式,sentinel:哨兵模式,master_slave:主从模式 # 不同的redis模式对应不同的配置方式,single-server对应的就是单机模式,具体参数意义可参考redisson的配置参数说明 single-server: address: 127.0.0.1 port: 6379 password: 123456 #zookeeper: #lock-scheme配置为zookeeper时,需要配置该参数 # address: 127.0.0.1:2181 #zk地址,支持集群 # connection-timeout-ms: 3000 # session-timeout: 3000 ``` 4. 在需要使用分布式锁的方法上面使用@RLock或@ZLock注解,锁的关键字使用@Key,以最简单的用法为例,如: ``` ###################### redis模式 ###################### @RLock public void hello(String ces, @Key String orderNo) { System.out.println("hello"); } ###################################################### #################### zookeeper模式 #################### @ZLock public void hello(String ces, @Key String orderNo) { System.out.println("hello"); } ###################################################### ``` 如果需要配置不同类型的锁,可以直接变更@RLock或者@ZLock参数值即可 > @RLock提供四个参数可以配置:
>     lockType:锁类型, 默认是可重入锁
>     leaseTime:加锁时间
>     waitTime:最长等待时间
>     timeUnit:锁时长单位 > @ZLock提供三个参数可以配置:
>     interProcess:锁类型, 默认是分布式可重入排它锁
>     waitTime:等待锁时间
>     timeUnit:锁时长单位,默认单位:秒 5. 1.1.x 版本的使用@Lock,用法与@RLock类似,参数用法是一样的,1.2.x 版本兼容1.1.x 版本的用法,配置如下风格: ``` lock-config: pattern: single single-server: address: 127.0.0.1 port: 6379 password: 123456 ``` DEMO地址如下:https://gitee.com/tooleek/lock-spring-boot-starter-demo #### QQ交流群 群号:779169894 加群链接:https://jq.qq.com/?_wv=1027&k=5ziKU1r #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request