> readIntersectionAsync(String... keys);
+
}
diff --git a/src/main/java/org/redisson/core/RSetCache.java b/src/main/java/org/redisson/core/RSetCache.java
index a2db04c93..902cb3493 100644
--- a/src/main/java/org/redisson/core/RSetCache.java
+++ b/src/main/java/org/redisson/core/RSetCache.java
@@ -19,10 +19,7 @@ import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
- * Set-based cache with ability to set TTL for each entry via
- * {@link #put(Object, Object, long, TimeUnit)} method.
- * And therefore has an complex lua-scripts inside.
- * Uses map(value_hash, value) to tie with sorted set which contains expiration record for every value with TTL.
+ *
Set-based cache with ability to set TTL for each object.
*
*
* Current Redis implementation doesn't have set entry eviction functionality.
diff --git a/src/test/java/org/redisson/RedissonLexSortedSetTest.java b/src/test/java/org/redisson/RedissonLexSortedSetTest.java
index e6ce62d4c..d3d220cb4 100644
--- a/src/test/java/org/redisson/RedissonLexSortedSetTest.java
+++ b/src/test/java/org/redisson/RedissonLexSortedSetTest.java
@@ -1,12 +1,53 @@
package org.redisson;
-import static org.assertj.core.api.Assertions.*;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.hamcrest.MatcherAssert;
+import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test;
import org.redisson.core.RLexSortedSet;
public class RedissonLexSortedSetTest extends BaseTest {
+ @Test
+ public void testPollLast() {
+ RLexSortedSet set = redisson.getLexSortedSet("simple");
+ Assert.assertNull(set.pollLast());
+
+ set.add("a");
+ set.add("b");
+ set.add("c");
+
+ Assert.assertEquals("c", set.pollLast());
+ MatcherAssert.assertThat(set, Matchers.contains("a", "b"));
+ }
+
+ @Test
+ public void testPollFirst() {
+ RLexSortedSet set = redisson.getLexSortedSet("simple");
+ Assert.assertNull(set.pollFirst());
+
+ set.add("a");
+ set.add("b");
+ set.add("c");
+
+ Assert.assertEquals("a", set.pollFirst());
+ MatcherAssert.assertThat(set, Matchers.contains("b", "c"));
+ }
+
+ @Test
+ public void testFirstLast() {
+ RLexSortedSet set = redisson.getLexSortedSet("simple");
+ set.add("a");
+ set.add("b");
+ set.add("c");
+ set.add("d");
+
+ Assert.assertEquals("a", set.first());
+ Assert.assertEquals("d", set.last());
+ }
+
@Test
public void testRemoveLexRangeTail() {
RLexSortedSet set = redisson.getLexSortedSet("simple");
diff --git a/src/test/java/org/redisson/RedissonScoredSortedSetTest.java b/src/test/java/org/redisson/RedissonScoredSortedSetTest.java
index 3b08976af..b51ab43e3 100644
--- a/src/test/java/org/redisson/RedissonScoredSortedSetTest.java
+++ b/src/test/java/org/redisson/RedissonScoredSortedSetTest.java
@@ -27,6 +27,18 @@ import io.netty.util.concurrent.Future;
public class RedissonScoredSortedSetTest extends BaseTest {
+ @Test
+ public void testReadAll() {
+ RScoredSortedSet set = redisson.getScoredSortedSet("simple");
+ set.add(0, "1");
+ set.add(1, "4");
+ set.add(2, "2");
+ set.add(3, "5");
+ set.add(4, "3");
+
+ assertThat(set.readAll()).containsOnly("1", "2", "4", "5", "3");
+ }
+
@Test
public void testAddAll() {
RScoredSortedSet set = redisson.getScoredSortedSet("simple");
@@ -288,6 +300,8 @@ public class RedissonScoredSortedSetTest extends BaseTest {
Assert.assertTrue(set.retainAll(Arrays.asList(1, 2)));
Assert.assertThat(set, Matchers.containsInAnyOrder(1, 2));
Assert.assertEquals(2, set.size());
+ assertThat(set.getScore(1)).isEqualTo(10);
+ assertThat(set.getScore(2)).isEqualTo(20);
}
@Test
@@ -651,12 +665,32 @@ public class RedissonScoredSortedSetTest extends BaseTest {
set.add(4, "e");
Collection> r = set.entryRange(1, true, 4, false, 1, 2);
+ Assert.assertEquals(2, r.size());
ScoredEntry[] a = r.toArray(new ScoredEntry[0]);
Assert.assertEquals(2d, a[0].getScore(), 0);
Assert.assertEquals(3d, a[1].getScore(), 0);
Assert.assertEquals("c", a[0].getValue());
Assert.assertEquals("d", a[1].getValue());
}
+
+ @Test
+ public void testScoredSortedSetEntryRangeReversed() {
+ RScoredSortedSet set = redisson.getScoredSortedSet("simple");
+
+ set.add(0, "a");
+ set.add(1, "b");
+ set.add(2, "c");
+ set.add(3, "d");
+ set.add(4, "e");
+
+ Collection> r = set.entryRangeReversed(1, true, 4, false, 1, 2);
+ Assert.assertEquals(2, r.size());
+ ScoredEntry[] a = r.toArray(new ScoredEntry[0]);
+ Assert.assertEquals(2d, a[0].getScore(), 0);
+ Assert.assertEquals(1d, a[1].getScore(), 0);
+ Assert.assertEquals("c", a[0].getValue());
+ Assert.assertEquals("b", a[1].getValue());
+ }
@Test
public void testScoredSortedSetEntryRangeNegativeInf() {
diff --git a/src/test/java/org/redisson/RedissonSetTest.java b/src/test/java/org/redisson/RedissonSetTest.java
index 0ee987094..4e0fac31f 100644
--- a/src/test/java/org/redisson/RedissonSetTest.java
+++ b/src/test/java/org/redisson/RedissonSetTest.java
@@ -334,7 +334,81 @@ public class RedissonSetTest extends BaseTest {
assertThat(set).containsOnly(5, 6);
}
+ @Test
+ public void testDiff() {
+ RSet set = redisson.getSet("set");
+ set.add(5);
+ set.add(6);
+ RSet set1 = redisson.getSet("set1");
+ set1.add(1);
+ set1.add(2);
+ set1.add(3);
+ RSet set2 = redisson.getSet("set2");
+ set2.add(3);
+ set2.add(4);
+ set2.add(5);
+
+ assertThat(set.diff("set1", "set2")).isEqualTo(2);
+ assertThat(set).containsOnly(1, 2);
+ }
+
+ @Test
+ public void testReadDiff() {
+ RSet set = redisson.getSet("set");
+ set.add(5);
+ set.add(7);
+ set.add(6);
+ RSet set1 = redisson.getSet("set1");
+ set1.add(1);
+ set1.add(2);
+ set1.add(5);
+ RSet set2 = redisson.getSet("set2");
+ set2.add(3);
+ set2.add(4);
+ set2.add(5);
+
+ assertThat(set.readDiff("set1", "set2")).containsOnly(7, 6);
+ assertThat(set).containsOnly(6, 5, 7);
+ }
+
+ @Test
+ public void testIntersection() {
+ RSet set = redisson.getSet("set");
+ set.add(5);
+ set.add(6);
+ RSet set1 = redisson.getSet("set1");
+ set1.add(1);
+ set1.add(2);
+ set1.add(3);
+ RSet set2 = redisson.getSet("set2");
+ set2.add(3);
+ set2.add(4);
+ set2.add(5);
+
+ assertThat(set.intersection("set1", "set2")).isEqualTo(1);
+ assertThat(set).containsOnly(3);
+ }
+
+ @Test
+ public void testReadIntersection() {
+ RSet set = redisson.getSet("set");
+ set.add(5);
+ set.add(7);
+ set.add(6);
+ RSet set1 = redisson.getSet("set1");
+ set1.add(1);
+ set1.add(2);
+ set1.add(5);
+ RSet set2 = redisson.getSet("set2");
+ set2.add(3);
+ set2.add(4);
+ set2.add(5);
+
+ assertThat(set.readIntersection("set1", "set2")).containsOnly(5);
+ assertThat(set).containsOnly(6, 5, 7);
+ }
+
@Test
public void testMove() throws Exception {
RSet set = redisson.getSet("set");