SetsExample.java

//EXAMPLE: sets_tutorial
//HIDE_START
package io.redis.examples;

import redis.clients.jedis.UnifiedJedis;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.Set;

import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class SetsExample {

    @Test
    public void run() {
        UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379");
        // HIDE_END

        // REMOVE_START
        jedis.del("bikes:racing:france");
        jedis.del("bikes:racing:usa");
        // REMOVE_END
        // STEP_START sadd
        long res1 = jedis.sadd("bikes:racing:france", "bike:1");
        System.out.println(res1);  // >>> 1

        long res2 = jedis.sadd("bikes:racing:france", "bike:1");
        System.out.println(res2);  // >>> 0

        long res3 = jedis.sadd("bikes:racing:france", "bike:2", "bike:3");
        System.out.println(res3);  // >>> 2

        long res4 = jedis.sadd("bikes:racing:usa", "bike:1", "bike:4");
        System.out.println(res4);  // >>> 2
        // STEP_END

        // REMOVE_START
        assertEquals(1,res1);
        assertEquals(0,res2);
        assertEquals(2,res3);
        assertEquals(2,res4);
        // REMOVE_END

        // STEP_START sismember
        // HIDE_START
        jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3");
        jedis.sadd("bikes:racing:usa", "bike:1", "bike:4");
        // HIDE_END

        boolean res5 = jedis.sismember("bikes:racing:usa", "bike:1");
        System.out.println(res5);  // >>> true

        boolean res6 = jedis.sismember("bikes:racing:usa", "bike:2");
        System.out.println(res6);  // >>> false
        // STEP_END

        // REMOVE_START
        assertTrue(res5);
        assertFalse(res6);
        // REMOVE_END

        // STEP_START sinter
        // HIDE_START
        jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3");
        jedis.sadd("bikes:racing:usa", "bike:1", "bike:4");
        // HIDE_END

        Set<String> res7 = jedis.sinter("bikes:racing:france", "bikes:racing:usa");
        System.out.println(res7);  // >>> [bike:1]
        // STEP_END

        // REMOVE_START
        assertEquals("[bike:1]",res7.toString());
        // REMOVE_END

        // STEP_START scard
        jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3");

        long res8 = jedis.scard("bikes:racing:france");
        System.out.println(res8);  // >>> 3
        // STEP_END

        // REMOVE_START
        assertEquals(3,res8);
        jedis.del("bikes:racing:france");
        // REMOVE_END

        // STEP_START sadd_smembers
        long res9 = jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3");
        System.out.println(res9);  // >>> 3

        Set<String> res10 = jedis.smembers("bikes:racing:france");
        System.out.println(res10);  // >>> [bike:1, bike:2, bike:3]
        // STEP_END

        // REMOVE_START
        assertEquals(3,res9);
        assertEquals("[bike:1, bike:2, bike:3]",res10.toString());
        // REMOVE_END

        // STEP_START smismember
        boolean res11 = jedis.sismember("bikes:racing:france", "bike:1");
        System.out.println(res11);  // >>> true

        List<Boolean> res12 = jedis.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4");
        System.out.println(res12);  // >>> [true,true,false]
        // STEP_END

        // REMOVE_START
        assertTrue(res11);
        assertEquals("[true, true, false]",res12.toString());
        // REMOVE_END

        // STEP_START sdiff
        jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3");
        jedis.sadd("bikes:racing:usa", "bike:1", "bike:4");

        Set<String> res13 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa");
        System.out.println(res13);  // >>> [bike:2, bike:3]

        // REMOVE_START
        assertEquals("[bike:2, bike:3]",res13.toString());
        jedis.del("bikes:racing:france");
        jedis.del("bikes:racing:usa");
        // REMOVE_END
        // STEP_END

        // STEP_START multisets
        jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3");
        jedis.sadd("bikes:racing:usa", "bike:1", "bike:4");
        jedis.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4");

        Set<String> res14 = jedis.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy");
        System.out.println(res14);  // >>> [bike:1]

        Set<String> res15 = jedis.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy");
        System.out.println(res15);  // >>> [bike:1, bike:2, bike:3, bike:4]

        Set<String> res16 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy");
        System.out.println(res16);  // >>> []

        Set<String> res17 = jedis.sdiff("bikes:racing:usa", "bikes:racing:france");
        System.out.println(res17);  // >>> [bike:4]

        Set<String> res18 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa");
        System.out.println(res18);  // >>> [bike:2, bike:3]

        // REMOVE_START
        assertEquals("[bike:1]",res14.toString());
        assertEquals("[bike:1, bike:2, bike:3, bike:4]",res15.toString());
        assertEquals("[]",res16.toString());
        assertEquals("[bike:4]",res17.toString());
        assertEquals("[bike:2, bike:3]",res18.toString());
        jedis.del("bikes:racing:france");
        jedis.del("bikes:racing:usa");
        jedis.del("bikes:racing:italy");
        // REMOVE_END
        // STEP_END

        // STEP_START srem
        jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5");

        long res19 = jedis.srem("bikes:racing:france", "bike:1");
        System.out.println(res18);  // >>> 1

        String res20 = jedis.spop("bikes:racing:france");
        System.out.println(res20);  // >>> bike:3

        Set<String> res21 = jedis.smembers("bikes:racing:france");
        System.out.println(res21);  // >>> [bike:2, bike:4, bike:5]

        String res22 = jedis.srandmember("bikes:racing:france");
        System.out.println(res22);  // >>> bike:4
        // STEP_END

        // REMOVE_START
        assertEquals(1,res19);
        // REMOVE_END

        // HIDE_START
        jedis.close();
        // HIDE_END
    }
}