diff --git a/redisson/src/main/java/org/redisson/RedissonReactive.java b/redisson/src/main/java/org/redisson/RedissonReactive.java index b7242d2e2..c5b8de5be 100644 --- a/redisson/src/main/java/org/redisson/RedissonReactive.java +++ b/redisson/src/main/java/org/redisson/RedissonReactive.java @@ -127,6 +127,17 @@ public class RedissonReactive implements RedissonReactiveClient { return ReactiveProxyBuilder.create(commandExecutor, new RedissonLock(commandExecutor, name), RLockReactive.class); } + @Override + public RLockReactive getSpinLock(String name) { + return getSpinLock(name, RedissonSpinLock.DEFAULT); + } + + @Override + public RLockReactive getSpinLock(String name, RedissonSpinLock.BackOffOptions backOffOptions) { + RedissonSpinLock spinLock = new RedissonSpinLock(commandExecutor, name, backOffOptions); + return ReactiveProxyBuilder.create(commandExecutor, spinLock, RLockReactive.class); + } + @Override public RLockReactive getMultiLock(RLock... locks) { return ReactiveProxyBuilder.create(commandExecutor, new RedissonMultiLock(locks), RLockReactive.class); diff --git a/redisson/src/main/java/org/redisson/RedissonRx.java b/redisson/src/main/java/org/redisson/RedissonRx.java index 878544137..779d356f8 100644 --- a/redisson/src/main/java/org/redisson/RedissonRx.java +++ b/redisson/src/main/java/org/redisson/RedissonRx.java @@ -114,6 +114,17 @@ public class RedissonRx implements RedissonRxClient { public RLockRx getLock(String name) { return RxProxyBuilder.create(commandExecutor, new RedissonLock(commandExecutor, name), RLockRx.class); } + + @Override + public RLockRx getSpinLock(String name) { + return getSpinLock(name, RedissonSpinLock.DEFAULT); + } + + @Override + public RLockRx getSpinLock(String name, RedissonSpinLock.BackOffOptions backOffOptions) { + RedissonSpinLock spinLock = new RedissonSpinLock(commandExecutor, name, backOffOptions); + return RxProxyBuilder.create(commandExecutor, spinLock, RLockRx.class); + } @Override public RLockRx getMultiLock(RLock... locks) { diff --git a/redisson/src/main/java/org/redisson/api/RedissonReactiveClient.java b/redisson/src/main/java/org/redisson/api/RedissonReactiveClient.java index 7717199b2..c7c20deaa 100644 --- a/redisson/src/main/java/org/redisson/api/RedissonReactiveClient.java +++ b/redisson/src/main/java/org/redisson/api/RedissonReactiveClient.java @@ -15,6 +15,7 @@ */ package org.redisson.api; +import org.redisson.RedissonSpinLock; import org.redisson.client.codec.Codec; import org.redisson.config.Config; @@ -164,6 +165,30 @@ public interface RedissonReactiveClient { * @return Lock object */ RLockReactive getLock(String name); + + /** + * Returns Spin lock instance by name. + *

+ * Implements a non-fair locking so doesn't guarantees an acquire order by threads. + *

+ * Lock doesn't use a pub/sub mechanism + * + * @param name - name of object + * @return Lock object + */ + RLockReactive getSpinLock(String name); + + /** + * Returns Spin lock instance by name with specified back off options. + *

+ * Implements a non-fair locking so doesn't guarantees an acquire order by threads. + *

+ * Lock doesn't use a pub/sub mechanism + * + * @param name - name of object + * @return Lock object + */ + RLockReactive getSpinLock(String name, RedissonSpinLock.BackOffOptions backOffOptions); /** * Returns MultiLock instance associated with specified locks diff --git a/redisson/src/main/java/org/redisson/api/RedissonRxClient.java b/redisson/src/main/java/org/redisson/api/RedissonRxClient.java index 1a9c7b1ff..2593da586 100644 --- a/redisson/src/main/java/org/redisson/api/RedissonRxClient.java +++ b/redisson/src/main/java/org/redisson/api/RedissonRxClient.java @@ -15,6 +15,7 @@ */ package org.redisson.api; +import org.redisson.RedissonSpinLock; import org.redisson.client.codec.Codec; import org.redisson.config.Config; @@ -163,6 +164,30 @@ public interface RedissonRxClient { * @return Lock object */ RLockRx getLock(String name); + + /** + * Returns Spin lock instance by name. + *

+ * Implements a non-fair locking so doesn't guarantees an acquire order by threads. + *

+ * Lock doesn't use a pub/sub mechanism + * + * @param name - name of object + * @return Lock object + */ + RLockRx getSpinLock(String name); + + /** + * Returns Spin lock instance by name with specified back off options. + *

+ * Implements a non-fair locking so doesn't guarantees an acquire order by threads. + *

+ * Lock doesn't use a pub/sub mechanism + * + * @param name - name of object + * @return Lock object + */ + RLockRx getSpinLock(String name, RedissonSpinLock.BackOffOptions backOffOptions); /** * Returns MultiLock instance associated with specified locks