From 39f02d29c71932b4f01d21fcf32d60963b1fa2e8 Mon Sep 17 00:00:00 2001 From: Nikita Date: Wed, 13 Jul 2016 14:07:30 +0300 Subject: [PATCH] RSetReactive.diff, RSetReactive.intersection added --- .../java/org/redisson/api/RSetReactive.java | 19 +++++++++++++++++++ .../client/protocol/RedisCommands.java | 2 ++ .../reactive/RedissonSetReactive.java | 16 ++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/src/main/java/org/redisson/api/RSetReactive.java b/src/main/java/org/redisson/api/RSetReactive.java index c9e29f226..b1a155e99 100644 --- a/src/main/java/org/redisson/api/RSetReactive.java +++ b/src/main/java/org/redisson/api/RSetReactive.java @@ -71,4 +71,23 @@ public interface RSetReactive extends RCollectionReactive { * @return */ Publisher> readUnion(String... names); + + /** + * Diff sets specified by name and write to current set. + * If current set already exists, it is overwritten. + * + * @param names + * @return + */ + Publisher diff(String... names); + + /** + * Intersection sets specified by name and write to current set. + * If current set already exists, it is overwritten. + * + * @param names + * @return + */ + Publisher intersection(String... names); + } diff --git a/src/main/java/org/redisson/client/protocol/RedisCommands.java b/src/main/java/org/redisson/client/protocol/RedisCommands.java index 7eb1dd8f3..76328187a 100644 --- a/src/main/java/org/redisson/client/protocol/RedisCommands.java +++ b/src/main/java/org/redisson/client/protocol/RedisCommands.java @@ -142,6 +142,8 @@ public interface RedisCommands { RedisStrictCommand SDIFFSTORE_INT = new RedisStrictCommand("SDIFFSTORE", new IntegerReplayConvertor()); RedisStrictCommand SINTERSTORE_INT = new RedisStrictCommand("SINTERSTORE", new IntegerReplayConvertor()); RedisStrictCommand SUNIONSTORE = new RedisStrictCommand("SUNIONSTORE"); + RedisStrictCommand SINTERSTORE = new RedisStrictCommand("SINTERSTORE"); + RedisStrictCommand SDIFFSTORE = new RedisStrictCommand("SDIFFSTORE"); RedisCommand> SUNION = new RedisCommand>("SUNION", new ObjectSetReplayDecoder()); RedisCommand> SDIFF = new RedisCommand>("SDIFF", new ObjectSetReplayDecoder()); RedisCommand> SINTER = new RedisCommand>("SINTER", new ObjectSetReplayDecoder()); diff --git a/src/main/java/org/redisson/reactive/RedissonSetReactive.java b/src/main/java/org/redisson/reactive/RedissonSetReactive.java index 586b0a495..9f4ce794a 100644 --- a/src/main/java/org/redisson/reactive/RedissonSetReactive.java +++ b/src/main/java/org/redisson/reactive/RedissonSetReactive.java @@ -118,6 +118,22 @@ public class RedissonSetReactive extends RedissonExpirableReactive implements return reactive(instance.removeAllAsync(c)); } + @Override + public Publisher intersection(String... names) { + List args = new ArrayList(names.length + 1); + args.add(getName()); + args.addAll(Arrays.asList(names)); + return commandExecutor.writeReactive(getName(), codec, RedisCommands.SINTERSTORE, args.toArray()); + } + + @Override + public Publisher diff(String... names) { + List args = new ArrayList(names.length + 1); + args.add(getName()); + args.addAll(Arrays.asList(names)); + return commandExecutor.writeReactive(getName(), codec, RedisCommands.SDIFFSTORE, args.toArray()); + } + @Override public Publisher union(String... names) { List args = new ArrayList(names.length + 1);