From ecd879763a6d3f523ea600dc53d08faaf04faac2 Mon Sep 17 00:00:00 2001 From: "binbin.hou" Date: Wed, 8 Dec 2021 10:19:58 +0800 Subject: [PATCH] release branch 0.0.3 --- CHANGELOG.md | 8 +- lock-api/pom.xml | 2 +- .../houbb/lock/api/support}/IOperator.java | 13 +-- lock-core/pom.xml | 10 +-- .../houbb/lock/redis/constant/LockConst.java | 28 ++++++ .../houbb/lock/redis/core/AbstractLock.java | 8 +- .../houbb/lock/redis/core/LockNone.java | 23 +++++ .../houbb/lock/redis/core/LockReadWrite.java | 4 +- .../lock/redis/core/LockReadWriteOwner.java | 2 +- .../lock/redis/core/LockReadWriteRe.java | 4 +- .../github/houbb/lock/redis/core/Locks.java | 88 +++++++++++++++++++ lock-redis/pom.xml | 28 ++++++ .../houbb/lock/redis/bs/LockRedisBs.java | 6 +- .../lock/redis/constant/LockRedisConst.java | 0 .../redis/exception/LockRedisException.java | 4 +- .../lock/redis/exception/package-info.java | 1 + .../houbb/lock/redis/lock}/LockRedis.java | 7 +- .../github/houbb/lock/redis/package-info.java | 1 + .../support/operator}/JedisOperator.java | 4 +- .../lock/redis/support/package-info.java | 0 lock-test/pom.xml | 8 +- .../lock/test/{ => redis}/JedisTest.java | 4 +- .../lock/test/{ => redis}/LockRedisTest.java | 8 +- pom.xml | 10 ++- release.bat | 4 +- 25 files changed, 232 insertions(+), 43 deletions(-) rename {lock-core/src/main/java/com/github/houbb/lock/redis/support/operator => lock-api/src/main/java/com/github/houbb/lock/api/support}/IOperator.java (74%) create mode 100644 lock-core/src/main/java/com/github/houbb/lock/redis/constant/LockConst.java create mode 100644 lock-core/src/main/java/com/github/houbb/lock/redis/core/LockNone.java create mode 100644 lock-core/src/main/java/com/github/houbb/lock/redis/core/Locks.java create mode 100644 lock-redis/pom.xml rename {lock-core => lock-redis}/src/main/java/com/github/houbb/lock/redis/bs/LockRedisBs.java (90%) rename {lock-core => lock-redis}/src/main/java/com/github/houbb/lock/redis/constant/LockRedisConst.java (100%) rename {lock-core => lock-redis}/src/main/java/com/github/houbb/lock/redis/exception/LockRedisException.java (87%) create mode 100644 lock-redis/src/main/java/com/github/houbb/lock/redis/exception/package-info.java rename {lock-core/src/main/java/com/github/houbb/lock/redis/core => lock-redis/src/main/java/com/github/houbb/lock/redis/lock}/LockRedis.java (91%) create mode 100644 lock-redis/src/main/java/com/github/houbb/lock/redis/package-info.java rename {lock-core/src/main/java/com/github/houbb/lock/redis/support/operator/impl => lock-redis/src/main/java/com/github/houbb/lock/redis/support/operator}/JedisOperator.java (93%) rename {lock-core => lock-redis}/src/main/java/com/github/houbb/lock/redis/support/package-info.java (100%) rename lock-test/src/test/java/com/github/houbb/lock/test/{ => redis}/JedisTest.java (83%) rename lock-test/src/test/java/com/github/houbb/lock/test/{ => redis}/LockRedisTest.java (79%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b42c22..f847127 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,4 +19,10 @@ | 序号 | 变更类型 | 说明 | 时间 | 备注 | |:---|:---|:---|:---|:--| -| 1 | A | 常见锁添加 | 2020-9-2 14:45:40 | | \ No newline at end of file +| 1 | A | 常见锁添加 | 2020-9-2 14:45:40 | | + +# release_0.0.3 + +| 序号 | 变更类型 | 说明 | 时间 | 备注 | +|:---|:---|:---|:---|:--| +| 1 | A | redis 锁独立,便于使用 | 2021-12-08 14:45:40 | | diff --git a/lock-api/pom.xml b/lock-api/pom.xml index 0242616..796cdd6 100644 --- a/lock-api/pom.xml +++ b/lock-api/pom.xml @@ -5,7 +5,7 @@ lock com.github.houbb - 0.0.3-SNAPSHOT + 0.0.3 4.0.0 diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/support/operator/IOperator.java b/lock-api/src/main/java/com/github/houbb/lock/api/support/IOperator.java similarity index 74% rename from lock-core/src/main/java/com/github/houbb/lock/redis/support/operator/IOperator.java rename to lock-api/src/main/java/com/github/houbb/lock/api/support/IOperator.java index 647287c..293bda2 100644 --- a/lock-core/src/main/java/com/github/houbb/lock/redis/support/operator/IOperator.java +++ b/lock-api/src/main/java/com/github/houbb/lock/api/support/IOperator.java @@ -1,9 +1,12 @@ -package com.github.houbb.lock.redis.support.operator; +package com.github.houbb.lock.api.support; /** - * Redis 客户端 + * 操作接口定义 + * + * ps: 可以基于集中式数据库做操作 + * * @author binbin.hou - * @since 0.0.1 + * @since 0.0.3 */ public interface IOperator { @@ -14,7 +17,7 @@ public interface IOperator { * @param requestId 请求标识 * @param expireTimeMills 超期时间 * @return 是否获取成功 - * @since 0.0.1 + * @since 0.0.3 */ boolean lock(String lockKey, String requestId, int expireTimeMills); @@ -23,7 +26,7 @@ public interface IOperator { * @param lockKey 锁 key * @param requestId 请求标识 * @return 结果 - * @since 0.0.1 + * @since 0.0.3 */ boolean unlock(String lockKey, String requestId); diff --git a/lock-core/pom.xml b/lock-core/pom.xml index 9e01433..981938c 100644 --- a/lock-core/pom.xml +++ b/lock-core/pom.xml @@ -5,7 +5,7 @@ lock com.github.houbb - 0.0.3-SNAPSHOT + 0.0.3 4.0.0 @@ -37,11 +37,7 @@ log-integration - - - redis.clients - jedis - + - \ No newline at end of file + diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/constant/LockConst.java b/lock-core/src/main/java/com/github/houbb/lock/redis/constant/LockConst.java new file mode 100644 index 0000000..42e88c2 --- /dev/null +++ b/lock-core/src/main/java/com/github/houbb/lock/redis/constant/LockConst.java @@ -0,0 +1,28 @@ +package com.github.houbb.lock.redis.constant; + +/** + * 通用锁常量 + * + * @author binbin.hou + * @since 0.0.3 + */ +public final class LockConst { + + private LockConst() { + } + + /** + * 默认的失效时间 + * + * 暂时定为 30min + * @since 0.0.1 + */ + public static final int DEFAULT_EXPIRE_MILLS = 1000 * 60 * 30; + + /** + * 默认锁为全局锁 + * @since 0.0.1 + */ + public static final String DEFAULT_KEY = "GLOBAL"; + +} diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/core/AbstractLock.java b/lock-core/src/main/java/com/github/houbb/lock/redis/core/AbstractLock.java index d2d6b34..8d8c3a0 100644 --- a/lock-core/src/main/java/com/github/houbb/lock/redis/core/AbstractLock.java +++ b/lock-core/src/main/java/com/github/houbb/lock/redis/core/AbstractLock.java @@ -1,7 +1,7 @@ package com.github.houbb.lock.redis.core; import com.github.houbb.lock.api.core.ILock; -import com.github.houbb.lock.redis.constant.LockRedisConst; +import com.github.houbb.lock.redis.constant.LockConst; import com.github.houbb.wait.api.IWait; import com.github.houbb.wait.core.Waits; @@ -41,12 +41,12 @@ public abstract class AbstractLock implements ILock { @Override public boolean tryLock() { - return tryLock(LockRedisConst.DEFAULT_KEY); + return tryLock(LockConst.DEFAULT_KEY); } @Override public void unlock() { - unlock(LockRedisConst.DEFAULT_KEY); + unlock(LockConst.DEFAULT_KEY); } @Override @@ -81,7 +81,7 @@ public abstract class AbstractLock implements ILock { @Override public synchronized boolean tryLock(long time, TimeUnit unit) throws InterruptedException { - return tryLock(time, unit, LockRedisConst.DEFAULT_KEY); + return tryLock(time, unit, LockConst.DEFAULT_KEY); } @Override diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockNone.java b/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockNone.java new file mode 100644 index 0000000..9e34863 --- /dev/null +++ b/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockNone.java @@ -0,0 +1,23 @@ +package com.github.houbb.lock.redis.core; + +import com.github.houbb.heaven.annotation.ThreadSafe; + +/** + * 无任何锁的操作 + * + * @author binbin.hou + * @since 0.0.3 + */ +@ThreadSafe +public class LockNone extends AbstractLock { + + @Override + public boolean tryLock(String key) { + return true; + } + + @Override + public void unlock(String key) { + + } +} diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWrite.java b/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWrite.java index cba4717..dcbee46 100644 --- a/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWrite.java +++ b/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWrite.java @@ -17,12 +17,12 @@ public class LockReadWrite implements IReadWriteLock { /** * 读次数统计 */ - private int readCount = 0; + private volatile int readCount = 0; /** * 写次数统计 */ - private int writeCount = 0; + private volatile int writeCount = 0; /** * 获取读锁,读锁在写锁不存在的时候才能获取 diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWriteOwner.java b/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWriteOwner.java index d62c41c..fdaeff9 100644 --- a/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWriteOwner.java +++ b/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWriteOwner.java @@ -36,7 +36,7 @@ public class LockReadWriteOwner implements IReadWriteLock { /** * 写次数统计 */ - private int writeCount = 0; + private volatile int writeCount = 0; /** * 获取读锁,读锁在写锁不存在的时候才能获取 diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWriteRe.java b/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWriteRe.java index 10e6e56..e7373d5 100644 --- a/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWriteRe.java +++ b/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockReadWriteRe.java @@ -36,7 +36,7 @@ public class LockReadWriteRe implements IReadWriteLock { /** * 写次数统计 */ - private int writeCount = 0; + private volatile int writeCount = 0; /** * 获取读锁,读锁在写锁不存在的时候才能获取 @@ -60,7 +60,7 @@ public class LockReadWriteRe implements IReadWriteLock { * 尝试获取读锁 * * 读锁之间是不互斥的,这里后续需要优化。 - * + * * @return 是否成功 * @since 0.0.2 */ diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/core/Locks.java b/lock-core/src/main/java/com/github/houbb/lock/redis/core/Locks.java new file mode 100644 index 0000000..d90c726 --- /dev/null +++ b/lock-core/src/main/java/com/github/houbb/lock/redis/core/Locks.java @@ -0,0 +1,88 @@ +package com.github.houbb.lock.redis.core; + +import com.github.houbb.lock.api.core.ILock; +import com.github.houbb.lock.api.core.IReadWriteLock; + +/** + * 锁工具 + * + * @author binbin.hou + * @since 0.0.3 + */ +public final class Locks { + + private Locks(){} + + /** + * 无锁 + * @return 锁 + * @since 0.0.3 + */ + public static ILock none() { + return new LockNone(); + } + + /** + * 读写锁 + * @return 锁 + * @since 0.0.3 + */ + public static IReadWriteLock readWrite() { + return new LockReadWrite(); + } + + /** + * 读写锁 + * @return 锁 + * @since 0.0.3 + */ + public static IReadWriteLock readWriteOwner() { + return new LockReadWriteOwner(); + } + + /** + * 可重入读写锁 + * @return 锁 + * @since 0.0.3 + */ + public static IReadWriteLock readWriteRe() { + return new LockReadWriteRe(); + } + + /** + * 自旋锁 + * @return 锁 + * @since 0.0.3 + */ + public static ILock spin() { + return new LockSpin(); + } + + /** + * 可重入自旋锁 + * @return 锁 + * @since 0.0.3 + */ + public static ILock spinRe() { + return new LockSpinRe(); + } + + /** + * 等待通知锁 + * @return 锁 + * @since 0.0.3 + */ + public static ILock waitNotify() { + return new LockWaitNotify(); + } + + /** + * 可重入等待通知锁 + * @return 锁 + * @since 0.0.3 + */ + public static ILock waitNotifyRe() { + return new LockWaitNotifyRe(); + } + +} diff --git a/lock-redis/pom.xml b/lock-redis/pom.xml new file mode 100644 index 0000000..826a7b2 --- /dev/null +++ b/lock-redis/pom.xml @@ -0,0 +1,28 @@ + + + + lock + com.github.houbb + 0.0.3 + + 4.0.0 + + lock-redis + + + + + com.github.houbb + lock-core + + + + + redis.clients + jedis + + + + diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/bs/LockRedisBs.java b/lock-redis/src/main/java/com/github/houbb/lock/redis/bs/LockRedisBs.java similarity index 90% rename from lock-core/src/main/java/com/github/houbb/lock/redis/bs/LockRedisBs.java rename to lock-redis/src/main/java/com/github/houbb/lock/redis/bs/LockRedisBs.java index a9cbb16..c9d4e00 100644 --- a/lock-core/src/main/java/com/github/houbb/lock/redis/bs/LockRedisBs.java +++ b/lock-redis/src/main/java/com/github/houbb/lock/redis/bs/LockRedisBs.java @@ -3,8 +3,8 @@ package com.github.houbb.lock.redis.bs; import com.github.houbb.id.api.Id; import com.github.houbb.id.core.core.Ids; import com.github.houbb.lock.api.core.ILock; -import com.github.houbb.lock.redis.core.LockRedis; -import com.github.houbb.lock.redis.support.operator.IOperator; +import com.github.houbb.lock.api.support.IOperator; +import com.github.houbb.lock.redis.lock.LockRedis; import com.github.houbb.wait.api.IWait; import com.github.houbb.wait.core.Waits; @@ -24,7 +24,7 @@ public final class LockRedisBs { private IWait wait = Waits.threadSleep(); /** - * 等待实现 + * ID 实现 * @since 0.0.1 */ private Id id = Ids.uuid32(); diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/constant/LockRedisConst.java b/lock-redis/src/main/java/com/github/houbb/lock/redis/constant/LockRedisConst.java similarity index 100% rename from lock-core/src/main/java/com/github/houbb/lock/redis/constant/LockRedisConst.java rename to lock-redis/src/main/java/com/github/houbb/lock/redis/constant/LockRedisConst.java diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/exception/LockRedisException.java b/lock-redis/src/main/java/com/github/houbb/lock/redis/exception/LockRedisException.java similarity index 87% rename from lock-core/src/main/java/com/github/houbb/lock/redis/exception/LockRedisException.java rename to lock-redis/src/main/java/com/github/houbb/lock/redis/exception/LockRedisException.java index 82d32ca..e54580b 100644 --- a/lock-core/src/main/java/com/github/houbb/lock/redis/exception/LockRedisException.java +++ b/lock-redis/src/main/java/com/github/houbb/lock/redis/exception/LockRedisException.java @@ -2,9 +2,9 @@ package com.github.houbb.lock.redis.exception; /** * @author binbin.hou - * @since 0.0.1 + * @since 0.0.3 */ -public class LockRedisException extends RuntimeException { +public class LockRedisException extends LockRuntimeException { public LockRedisException() { } diff --git a/lock-redis/src/main/java/com/github/houbb/lock/redis/exception/package-info.java b/lock-redis/src/main/java/com/github/houbb/lock/redis/exception/package-info.java new file mode 100644 index 0000000..121b842 --- /dev/null +++ b/lock-redis/src/main/java/com/github/houbb/lock/redis/exception/package-info.java @@ -0,0 +1 @@ +package com.github.houbb.lock.redis.exception; diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockRedis.java b/lock-redis/src/main/java/com/github/houbb/lock/redis/lock/LockRedis.java similarity index 91% rename from lock-core/src/main/java/com/github/houbb/lock/redis/core/LockRedis.java rename to lock-redis/src/main/java/com/github/houbb/lock/redis/lock/LockRedis.java index b744538..04453c9 100644 --- a/lock-core/src/main/java/com/github/houbb/lock/redis/core/LockRedis.java +++ b/lock-redis/src/main/java/com/github/houbb/lock/redis/lock/LockRedis.java @@ -1,11 +1,12 @@ -package com.github.houbb.lock.redis.core; +package com.github.houbb.lock.redis.lock; import com.github.houbb.heaven.util.lang.StringUtil; import com.github.houbb.id.api.Id; import com.github.houbb.id.core.util.IdThreadLocalHelper; +import com.github.houbb.lock.api.support.IOperator; import com.github.houbb.lock.redis.constant.LockRedisConst; +import com.github.houbb.lock.redis.core.AbstractLock; import com.github.houbb.lock.redis.exception.LockRedisException; -import com.github.houbb.lock.redis.support.operator.IOperator; import com.github.houbb.wait.api.IWait; /** @@ -57,4 +58,4 @@ public class LockRedis extends AbstractLock { throw new LockRedisException("Unlock key " + key + " result is failed!"); } } -} \ No newline at end of file +} diff --git a/lock-redis/src/main/java/com/github/houbb/lock/redis/package-info.java b/lock-redis/src/main/java/com/github/houbb/lock/redis/package-info.java new file mode 100644 index 0000000..fe1eb76 --- /dev/null +++ b/lock-redis/src/main/java/com/github/houbb/lock/redis/package-info.java @@ -0,0 +1 @@ +package com.github.houbb.lock.redis; diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/support/operator/impl/JedisOperator.java b/lock-redis/src/main/java/com/github/houbb/lock/redis/support/operator/JedisOperator.java similarity index 93% rename from lock-core/src/main/java/com/github/houbb/lock/redis/support/operator/impl/JedisOperator.java rename to lock-redis/src/main/java/com/github/houbb/lock/redis/support/operator/JedisOperator.java index c773b7a..ec7e71a 100644 --- a/lock-core/src/main/java/com/github/houbb/lock/redis/support/operator/impl/JedisOperator.java +++ b/lock-redis/src/main/java/com/github/houbb/lock/redis/support/operator/JedisOperator.java @@ -1,7 +1,7 @@ -package com.github.houbb.lock.redis.support.operator.impl; +package com.github.houbb.lock.redis.support.operator; +import com.github.houbb.lock.api.support.IOperator; import com.github.houbb.lock.redis.constant.LockRedisConst; -import com.github.houbb.lock.redis.support.operator.IOperator; import redis.clients.jedis.Jedis; import java.util.Collections; diff --git a/lock-core/src/main/java/com/github/houbb/lock/redis/support/package-info.java b/lock-redis/src/main/java/com/github/houbb/lock/redis/support/package-info.java similarity index 100% rename from lock-core/src/main/java/com/github/houbb/lock/redis/support/package-info.java rename to lock-redis/src/main/java/com/github/houbb/lock/redis/support/package-info.java diff --git a/lock-test/pom.xml b/lock-test/pom.xml index 3f1f5ab..9063f35 100644 --- a/lock-test/pom.xml +++ b/lock-test/pom.xml @@ -5,7 +5,7 @@ lock com.github.houbb - 0.0.3-SNAPSHOT + 0.0.3 4.0.0 @@ -16,6 +16,10 @@ com.github.houbb lock-core + + com.github.houbb + lock-redis + junit @@ -23,4 +27,4 @@ - \ No newline at end of file + diff --git a/lock-test/src/test/java/com/github/houbb/lock/test/JedisTest.java b/lock-test/src/test/java/com/github/houbb/lock/test/redis/JedisTest.java similarity index 83% rename from lock-test/src/test/java/com/github/houbb/lock/test/JedisTest.java rename to lock-test/src/test/java/com/github/houbb/lock/test/redis/JedisTest.java index c8a2aad..0fe772b 100644 --- a/lock-test/src/test/java/com/github/houbb/lock/test/JedisTest.java +++ b/lock-test/src/test/java/com/github/houbb/lock/test/redis/JedisTest.java @@ -1,6 +1,7 @@ -package com.github.houbb.lock.test; +package com.github.houbb.lock.test.redis; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; import redis.clients.jedis.Jedis; @@ -8,6 +9,7 @@ import redis.clients.jedis.Jedis; * @author binbin.hou * @since 0.0.1 */ +@Ignore public class JedisTest { @Test diff --git a/lock-test/src/test/java/com/github/houbb/lock/test/LockRedisTest.java b/lock-test/src/test/java/com/github/houbb/lock/test/redis/LockRedisTest.java similarity index 79% rename from lock-test/src/test/java/com/github/houbb/lock/test/LockRedisTest.java rename to lock-test/src/test/java/com/github/houbb/lock/test/redis/LockRedisTest.java index 8922704..6bdae4c 100644 --- a/lock-test/src/test/java/com/github/houbb/lock/test/LockRedisTest.java +++ b/lock-test/src/test/java/com/github/houbb/lock/test/redis/LockRedisTest.java @@ -1,9 +1,10 @@ -package com.github.houbb.lock.test; +package com.github.houbb.lock.test.redis; import com.github.houbb.lock.api.core.ILock; +import com.github.houbb.lock.api.support.IOperator; import com.github.houbb.lock.redis.bs.LockRedisBs; -import com.github.houbb.lock.redis.support.operator.IOperator; -import com.github.houbb.lock.redis.support.operator.impl.JedisOperator; +import com.github.houbb.lock.redis.support.operator.JedisOperator; +import org.junit.Ignore; import org.junit.Test; import redis.clients.jedis.Jedis; @@ -11,6 +12,7 @@ import redis.clients.jedis.Jedis; * @author binbin.hou * @since 0.0.1 */ +@Ignore public class LockRedisTest { @Test diff --git a/pom.xml b/pom.xml index b1993df..26d2564 100644 --- a/pom.xml +++ b/pom.xml @@ -5,11 +5,12 @@ com.github.houbb lock pom - 0.0.3-SNAPSHOT + 0.0.3 lock-api lock-core lock-test + lock-redis @@ -33,7 +34,7 @@ 1.0.6 - 0.1.114 + 0.1.148 0.0.6 0.0.1 1.1.8 @@ -56,6 +57,11 @@ lock-core ${project.version} + + com.github.houbb + lock-redis + ${project.version} + diff --git a/release.bat b/release.bat index 96acc1a..e9477f0 100644 --- a/release.bat +++ b/release.bat @@ -10,9 +10,9 @@ ECHO "============================= RELEASE START..." :: 版本号信息(需要手动指定) :::: 旧版本名称 -SET version=0.0.2 +SET version=0.0.3 :::: 新版本名称 -SET newVersion=0.0.3 +SET newVersion=0.0.4 :::: 组织名称 SET groupName=com.github.houbb :::: 项目名称