4 Commits

Author SHA1 Message Date
老马啸西风
9ef657d0ba Update README.md 2022-12-08 14:19:12 +08:00
binbin.hou
0f9ce0441e [Feature] add for new 2022-12-08 14:02:18 +08:00
binbin.hou
bc1fd8fc71 [Feature] add for new 2022-12-08 13:53:21 +08:00
binbin.hou
4ce823e161 release branch 1.3.0 2022-12-08 13:30:01 +08:00
14 changed files with 64 additions and 47 deletions

View File

@@ -53,3 +53,9 @@
| 1 | A | 添加 keyFormat | 2022-12-8 14:45:40 | |
| 2 | A | 添加锁释放失败 | 2022-12-8 14:45:40 | |
| 3 | O | 加锁处理优化,接口统一优化 | 2022-12-8 14:45:40 | |
# release_1.3.0
| 序号 | 变更类型 | 说明 | 时间 | 备注 |
|:---|:---|:---|:---|:--|
| 1 | A | 让 redis-config 主动启用,避免无法主动管理的情况 | 2022-12-8 14:45:40 | |

View File

@@ -1,23 +1,27 @@
# 项目简介
[lock](https://github.com/houbb/lock) 为 java 设计的分布式锁。
[lock](https://github.com/houbb/lock) 为 java 设计的分布式锁,开箱即用,纵享丝滑
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.houbb/lock/badge.svg)](http://mvnrepository.com/artifact/com.github.houbb/lock)
[![Build Status](https://www.travis-ci.org/houbb/lock.svg?branch=master)](https://www.travis-ci.org/houbb/lock?branch=master)
[![Coverage Status](https://coveralls.io/repos/github/houbb/lock/badge.svg?branch=master)](https://coveralls.io/github/houbb/lock?branch=master)
开源地址:[https://github.com/houbb/lock](https://github.com/houbb/lock)
## 目的
- 开箱即用,支持注解式和过程式调用
- 基于 redis 的分布式锁
- 内置支持多种 redis 的整合方式
- 渐进式设计,可独立于 spring 使用
- 整合 spring
- 整合 spring-boot
- 支持多种 redis 的整合方式
# 变更日志
> [变更日志](CHANGELOG.md)
@@ -36,7 +40,7 @@ maven 3.x+
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>lock-core</artifactId>
<version>1.2.0</version>
<version>1.3.0</version>
</dependency>
```
@@ -83,7 +87,7 @@ LockBs.newInstance()
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>lock-spring</artifactId>
<version>1.2.0</version>
<version>1.3.0</version>
</dependency>
```
@@ -93,10 +97,13 @@ LockBs.newInstance()
`@EnableLock` 启用分布式锁。
`@EnableRedisConfig` 启用 redis 的默认配置。
```xml
@Configurable
@ComponentScan(basePackages = "com.github.houbb.lock.test.service")
@EnableLock
@EnableRedisConfig
public class SpringConfig {
}
```
@@ -109,7 +116,6 @@ public @interface EnableLock {
/**
* 唯一标识生成策略
* @return 结果
* @since 1.1.0
*/
String id() default "lockId";
@@ -119,21 +125,18 @@ public @interface EnableLock {
* 默认引入 redis-config 中的配置
*
* @return 实现
* @since 1.1.0
*/
String cache() default "springRedisService";
/**
* 加锁 key 格式化策略
* @return 策略
* @since 1.2.0
*/
String lockKeyFormat() default "lockKeyFormat";
/**
* 锁释放失败处理类
* @return 结果
* @since 1.2.0
*/
String lockReleaseFailHandler() default "lockReleaseFailHandler";
@@ -142,7 +145,7 @@ public @interface EnableLock {
其中 `springRedisService` 使用的是 [redis-config](https://github.com/houbb/redis-config) 中的实现。
redis 的配置信息如下:
对应注解 `@EnableRedisConfig`redis 的配置信息如下:
| 配置 | 说明 | 默认值
|:---|:---|:----|
@@ -219,21 +222,18 @@ public @interface Lock {
/**
* 时间单位
* @return 单位
* @since 1.2.0
*/
TimeUnit timeUnit() default TimeUnit.SECONDS;
/**
* 等待锁时间
* @return 等待锁时间
* @since 1.2.0
*/
long waitLockTime() default 10;
/**
* 业务加锁时间
* @return 加锁时间
* @since 1.2.0
*/
long lockTime() default 60;
@@ -248,7 +248,7 @@ public @interface Lock {
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>lock-springboot-starter</artifactId>
<version>1.2.0</version>
<version>1.3.0</version>
</dependency>
```
@@ -262,4 +262,24 @@ public @interface Lock {
持有锁的线程可以多次获取锁
- [x] 分布式锁注解支持
- [x] 分布式锁注解支持
# 拓展阅读
[Redis 分布式锁](https://houbb.github.io/2018/09/08/redis-learn-42-distributed-lock-redis)
[java 从零实现 redis 分布式锁](https://houbb.github.io/2018/09/08/redis-learn-43-distributed-lock-redis-java-impl)
# 缓存相关工具
[cache: 手写渐进式 redis](https://github.com/houbb/cache)
[common-cache: 通用缓存标准定义](https://github.com/houbb/common-cache)
[redis-config: 兼容各种常见的 redis 配置模式](https://github.com/houbb/redis-config)
[lock: 开箱即用的分布式锁](https://github.com/houbb/lock)
[resubmit: 防重复提交](https://github.com/houbb/resubmit)
[rate-limit: 限流](https://github.com/houbb/rate-limit/)

View File

@@ -5,7 +5,7 @@
<parent>
<artifactId>lock</artifactId>
<groupId>com.github.houbb</groupId>
<version>1.2.0</version>
<version>1.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent>
<artifactId>lock</artifactId>
<groupId>com.github.houbb</groupId>
<version>1.2.0</version>
<version>1.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<parent>
<artifactId>lock</artifactId>
<groupId>com.github.houbb</groupId>
<version>1.2.0</version>
<version>1.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -1,16 +0,0 @@
package com.github.houbb.lock.spring.config;
import com.github.houbb.redis.config.spring.annotation.EnableRedisConfig;
import org.springframework.context.annotation.Configuration;
/**
* bean 配置
*
* @author binbin.hou
* @since 0.0.2
*/
@Configuration
@EnableRedisConfig
public class CommonCacheConfig {
}

View File

@@ -1,16 +1,12 @@
package com.github.houbb.lock.spring.config;
import com.github.houbb.common.cache.api.service.ICommonCacheService;
import com.github.houbb.heaven.util.lang.StringUtil;
import com.github.houbb.id.api.Id;
import com.github.houbb.id.core.core.Ids;
import com.github.houbb.lock.api.core.ILockKeyFormat;
import com.github.houbb.lock.api.core.ILockReleaseFailHandler;
import com.github.houbb.lock.core.bs.LockBs;
import com.github.houbb.lock.spring.annotation.EnableLock;
import com.github.houbb.redis.config.core.factory.JedisRedisServiceFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.annotation.*;
@@ -25,7 +21,7 @@ import org.springframework.core.type.AnnotationMetadata;
*/
@Configuration
@ComponentScan(basePackages = "com.github.houbb.lock.spring")
@Import({LockBeanConfig.class, CommonCacheConfig.class})
@Import({LockBeanConfig.class})
public class LockAopConfig implements ImportAware, BeanFactoryPostProcessor {
@Bean("lockBs")

View File

@@ -5,7 +5,7 @@
<parent>
<artifactId>lock</artifactId>
<groupId>com.github.houbb</groupId>
<version>1.2.0</version>
<version>1.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -17,9 +17,15 @@
<artifactId>lock-spring</artifactId>
</dependency>
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>redis-config-springboot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -1,8 +1,6 @@
package com.github.houbb.lock.springboot.starter.config;
import com.github.houbb.lock.spring.annotation.EnableLock;
import com.github.houbb.lock.spring.config.LockAopConfig;
import com.github.houbb.redis.config.spring.annotation.EnableRedisConfig;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Configuration;

View File

@@ -5,7 +5,7 @@
<parent>
<artifactId>lock</artifactId>
<groupId>com.github.houbb</groupId>
<version>1.2.0</version>
<version>1.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -2,6 +2,7 @@ package com.github.houbb.lock.test.config;
import com.github.houbb.lock.spring.annotation.EnableLock;
import com.github.houbb.redis.config.spring.annotation.EnableRedisConfig;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.ComponentScan;
@@ -12,5 +13,6 @@ import org.springframework.context.annotation.ComponentScan;
@Configurable
@ComponentScan(basePackages = "com.github.houbb.lock.test.service")
@EnableLock
@EnableRedisConfig
public class SpringConfig {
}

View File

@@ -5,7 +5,7 @@
<parent>
<artifactId>lock</artifactId>
<groupId>com.github.houbb</groupId>
<version>1.2.0</version>
<version>1.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -5,7 +5,7 @@
<groupId>com.github.houbb</groupId>
<artifactId>lock</artifactId>
<packaging>pom</packaging>
<version>1.2.0</version>
<version>1.3.0</version>
<modules>
<module>lock-api</module>
<module>lock-core</module>
@@ -123,6 +123,11 @@
<artifactId>redis-config-spring</artifactId>
<version>${redis-config.version}</version>
</dependency>
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>redis-config-springboot-starter</artifactId>
<version>${redis-config.version}</version>
</dependency>
<!--============================== OTHER ==============================-->
<dependency>

View File

@@ -10,9 +10,9 @@ ECHO "============================= RELEASE START..."
:: 版本号信息(需要手动指定)
:::: 旧版本名称
SET version=1.2.0
SET version=1.3.0
:::: 新版本名称
SET newVersion=1.3.0
SET newVersion=1.4.0
:::: 组织名称
SET groupName=com.github.houbb
:::: 项目名称