@ -84,4 +84,14 @@ public class RedissonBucket<V> extends RedissonExpirable implements RBucket<V> {
return isExists();
}
@Override
public Future<Boolean> trySetAsync(V value) {
return commandExecutor.writeAsync(getName(), codec, RedisCommands.SETNX, getName(), value);
public boolean trySet(V value) {
return get(trySetAsync(value));
@ -28,6 +28,8 @@ public interface RBucket<V> extends RExpirable, RBucketAsync<V> {
V get();
boolean trySet(V value);
void set(V value);
void set(V value, long timeToLive, TimeUnit timeUnit);
@ -30,6 +30,8 @@ public interface RBucketAsync<V> extends RExpirableAsync {
Future<V> getAsync();
Future<Boolean> trySetAsync(V value);
Future<Void> setAsync(V value);
Future<Void> setAsync(V value, long timeToLive, TimeUnit timeUnit);
@ -14,6 +14,14 @@ import static org.assertj.core.api.Assertions.*;
public class RedissonBucketTest extends BaseTest {
@Test
public void testTrySet() {
RBucket<String> r1 = redisson.getBucket("12");
assertThat(r1.trySet("3")).isTrue();
assertThat(r1.trySet("4")).isFalse();
assertThat(r1.get()).isEqualTo("3");
public void testSaveBuckets() {
Map<String, Integer> buckets = new HashMap<String, Integer>();