From cdcf1bdfa18d26fde5523be8eb796bf481947667 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 21 Jan 2016 16:16:18 +0300 Subject: [PATCH] readAll and readAllAsync methods added to RSet. #374 --- src/main/java/org/redisson/RedissonSet.java | 13 ++++++++++--- .../org/redisson/client/protocol/RedisCommands.java | 2 +- src/main/java/org/redisson/core/RSet.java | 7 +++++++ src/main/java/org/redisson/core/RSetAsync.java | 9 +++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/redisson/RedissonSet.java b/src/main/java/org/redisson/RedissonSet.java index fd480eb86..0b16b9fbb 100644 --- a/src/main/java/org/redisson/RedissonSet.java +++ b/src/main/java/org/redisson/RedissonSet.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; +import java.util.Set; import org.redisson.client.codec.Codec; import org.redisson.client.protocol.RedisCommands; @@ -143,19 +144,25 @@ public class RedissonSet extends RedissonExpirable implements RSet { }; } - private Future> readAllAsync() { + @Override + public Future> readAllAsync() { return commandExecutor.readAsync(getName(), codec, RedisCommands.SMEMBERS, getName()); } + @Override + public Set readAll() { + return get(readAllAsync()); + } + @Override public Object[] toArray() { - List res = (List) get(readAllAsync()); + Set res = (Set) get(readAllAsync()); return res.toArray(); } @Override public T[] toArray(T[] a) { - List res = (List) get(readAllAsync()); + Set res = (Set) get(readAllAsync()); return res.toArray(a); } diff --git a/src/main/java/org/redisson/client/protocol/RedisCommands.java b/src/main/java/org/redisson/client/protocol/RedisCommands.java index b5b088035..e56afa4a9 100644 --- a/src/main/java/org/redisson/client/protocol/RedisCommands.java +++ b/src/main/java/org/redisson/client/protocol/RedisCommands.java @@ -110,7 +110,7 @@ public interface RedisCommands { RedisCommand SADD_SINGLE = new RedisCommand("SADD", new BooleanReplayConvertor(), 2); RedisCommand SREM_SINGLE = new RedisCommand("SREM", new BooleanReplayConvertor(), 2); RedisCommand SMOVE = new RedisCommand("SMOVE", new BooleanReplayConvertor(), 3); - RedisCommand> SMEMBERS = new RedisCommand>("SMEMBERS", new ObjectListReplayDecoder()); + RedisCommand> SMEMBERS = new RedisCommand>("SMEMBERS", new ObjectSetReplayDecoder()); RedisCommand> SSCAN = new RedisCommand>("SSCAN", new NestedMultiDecoder(new ObjectListReplayDecoder(), new ListScanResultReplayDecoder()), ValueType.OBJECT); RedisCommand> EVAL_SSCAN = new RedisCommand>("EVAL", new NestedMultiDecoder(new ObjectListReplayDecoder(), new ListScanResultReplayDecoder()), ValueType.OBJECT); RedisCommand SISMEMBER = new RedisCommand("SISMEMBER", new BooleanReplayConvertor(), 2); diff --git a/src/main/java/org/redisson/core/RSet.java b/src/main/java/org/redisson/core/RSet.java index e4961a9b8..fc7761607 100644 --- a/src/main/java/org/redisson/core/RSet.java +++ b/src/main/java/org/redisson/core/RSet.java @@ -43,4 +43,11 @@ public interface RSet extends Set, RExpirable, RSetAsync { */ boolean move(String destination, V member); + /** + * Read all elements at once + * + * @return + */ + Set readAll(); + } diff --git a/src/main/java/org/redisson/core/RSetAsync.java b/src/main/java/org/redisson/core/RSetAsync.java index 9ecdd9eb9..9ab86b013 100644 --- a/src/main/java/org/redisson/core/RSetAsync.java +++ b/src/main/java/org/redisson/core/RSetAsync.java @@ -15,6 +15,8 @@ */ package org.redisson.core; +import java.util.Set; + import io.netty.util.concurrent.Future; /** @@ -44,4 +46,11 @@ public interface RSetAsync extends RCollectionAsync { */ Future moveAsync(String destination, V member); + /** + * Read all elements at once + * + * @return + */ + Future> readAllAsync(); + }