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
:::: 项目名称