diff --git a/redis-support-lib/src/main/java/cn/axzo/foundation/redis/support/RedisLock.java b/redis-support-lib/src/main/java/cn/axzo/foundation/redis/support/RedisLock.java index 38dd164..58d2fe1 100644 --- a/redis-support-lib/src/main/java/cn/axzo/foundation/redis/support/RedisLock.java +++ b/redis-support-lib/src/main/java/cn/axzo/foundation/redis/support/RedisLock.java @@ -200,6 +200,21 @@ public class RedisLock { } } + /** + * 尝试立即获取锁,并执行supplier.get()方法,返回结果。
+ * timeoutMills = 0, expireMillis = 参数传入 + */ + public T acquireImmediatelyRun(long expireMillis, Supplier supplier) { + if (!lock(0, expireMillis)) { + throw ResultCode.OPERATE_TOO_FREQUENTLY.toException(); + } + try { + return supplier.get(); + } finally { + close(); + } + } + /** * 加锁 应该以: lock(); try { doSomething(); } finally { close(); } 的方式调用
* 外部不建议直接使用该方法,建议使用{@link #tryAcquireRun(long, long, Supplier)}明确指定锁的等待和过期时间