diff --git a/src/test/java/io/redis/examples/async/CmdsSetExample.java b/src/test/java/io/redis/examples/async/CmdsSetExample.java new file mode 100644 index 0000000000..07e6b6cae6 --- /dev/null +++ b/src/test/java/io/redis/examples/async/CmdsSetExample.java @@ -0,0 +1,90 @@ +// EXAMPLE: cmds_set +package io.redis.examples.async; + +import io.lettuce.core.*; +import io.lettuce.core.api.async.RedisAsyncCommands; +import io.lettuce.core.api.StatefulRedisConnection; + +// REMOVE_START +import org.junit.jupiter.api.Test; +// REMOVE_END +import java.util.concurrent.CompletableFuture; +import static java.util.stream.Collectors.toList; +// REMOVE_START +import static org.assertj.core.api.Assertions.assertThat; +// REMOVE_END + +public class CmdsSetExample { + + @Test + public void run() { + RedisClient redisClient = RedisClient.create("redis://localhost:6379"); + + try (StatefulRedisConnection connection = redisClient.connect()) { + RedisAsyncCommands asyncCommands = connection.async(); + // REMOVE_START + CompletableFuture delResult = asyncCommands.del("myset").toCompletableFuture(); + delResult.join(); + // REMOVE_END + + // STEP_START sadd + CompletableFuture sadd = asyncCommands.sadd("myset", "Hello").thenCompose(r -> { + System.out.println(r); // >>> 1 + // REMOVE_START + assertThat(r).isEqualTo(1); + // REMOVE_END + return asyncCommands.sadd("myset", "World"); + }).thenCompose(r -> { + System.out.println(r); // >>> 1 + // REMOVE_START + assertThat(r).isEqualTo(1); + // REMOVE_END + return asyncCommands.sadd("myset", "World"); + }).thenCompose(r -> { + System.out.println(r); // >>> 0 + // REMOVE_START + assertThat(r).isEqualTo(0); + // REMOVE_END + return asyncCommands.smembers("myset"); + }) + // REMOVE_START + .thenApply(r -> { + assertThat(r.stream().sorted().collect(toList()).toString()).isEqualTo("[Hello, World]"); + return r; + }) + // REMOVE_END + .thenAccept(System.out::println) + // >>> [Hello, World] + .toCompletableFuture(); + // STEP_END + // HIDE_START + sadd.join(); + // HIDE_END + // REMOVE_START + CompletableFuture delSaddResult = asyncCommands.del("myset").toCompletableFuture(); + delSaddResult.join(); + // REMOVE_END + + // STEP_START smembers + CompletableFuture smembers = asyncCommands.sadd("myset", "Hello", "World").thenCompose(r -> { + return asyncCommands.smembers("myset"); + }) + // REMOVE_START + .thenApply(r -> { + assertThat(r.stream().sorted().collect(toList()).toString()).isEqualTo("[Hello, World]"); + return r; + }) + // REMOVE_END + .thenAccept(System.out::println) + // >>> [Hello, World] + .toCompletableFuture(); + // STEP_END + // HIDE_START + smembers.join(); + // HIDE_END + } finally { + redisClient.shutdown(); + } + } + +} diff --git a/src/test/java/io/redis/examples/reactive/CmdsSetExample.java b/src/test/java/io/redis/examples/reactive/CmdsSetExample.java new file mode 100644 index 0000000000..bb330f94d1 --- /dev/null +++ b/src/test/java/io/redis/examples/reactive/CmdsSetExample.java @@ -0,0 +1,80 @@ +// EXAMPLE: cmds_set +package io.redis.examples.reactive; + +import io.lettuce.core.*; +import io.lettuce.core.api.reactive.RedisReactiveCommands; +import io.lettuce.core.api.StatefulRedisConnection; + +import reactor.core.publisher.Mono; +// REMOVE_START +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; +// REMOVE_END + +public class CmdsSetExample { + + @Test + public void run() { + RedisClient redisClient = RedisClient.create("redis://localhost:6379"); + + try (StatefulRedisConnection connection = redisClient.connect()) { + RedisReactiveCommands reactiveCommands = connection.reactive(); + // REMOVE_START + // Clean up any existing data + Mono cleanup = reactiveCommands.del("myset").then(); + cleanup.block(); + // REMOVE_END + + // STEP_START sadd + Mono sadd = reactiveCommands.sadd("myset", "Hello").doOnNext(r -> { + System.out.println(r); // >>> 1 + // REMOVE_START + assertThat(r).isEqualTo(1); + // REMOVE_END + }).flatMap(r -> reactiveCommands.sadd("myset", "World")).doOnNext(r -> { + System.out.println(r); // >>> 1 + // REMOVE_START + assertThat(r).isEqualTo(1); + // REMOVE_END + }).flatMap(r -> reactiveCommands.sadd("myset", "World")).doOnNext(r -> { + System.out.println(r); // >>> 0 + // REMOVE_START + assertThat(r).isEqualTo(0); + // REMOVE_END + }).flatMap(r -> reactiveCommands.smembers("myset").collectList()).doOnNext(r -> { + System.out.println(r); // >>> [Hello, World] + // REMOVE_START + assertThat(r).containsExactlyInAnyOrder("Hello", "World"); + // REMOVE_END + }).then(); + // STEP_END + // HIDE_START + sadd.block(); + // HIDE_END + // REMOVE_START + Mono delSaddResult = reactiveCommands.del("myset"); + delSaddResult.block(); + // REMOVE_END + + // STEP_START smembers + Mono smembers = reactiveCommands.sadd("myset", "Hello", "World").doOnNext(r -> { + System.out.println(r); // >>> 2 + // REMOVE_START + assertThat(r).isEqualTo(2); + // REMOVE_END + }).flatMap(r -> reactiveCommands.smembers("myset").collectList()).doOnNext(r -> { + System.out.println(r); // >>> [Hello, World] + // REMOVE_START + assertThat(r).containsExactlyInAnyOrder("Hello", "World"); + // REMOVE_END + }).then(); + // STEP_END + // HIDE_START + smembers.block(); + // HIDE_END + } finally { + redisClient.shutdown(); + } + } + +}