From 6e5acaf16381f2ee6b6e3b597ba0f892baacd259 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Mon, 30 Jun 2025 14:42:31 +0100 Subject: [PATCH 1/3] DOC-5399 added async set command examples --- .../redis/examples/async/CmdsSetExample.java | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 src/test/java/io/redis/examples/async/CmdsSetExample.java 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..e6b0644724 --- /dev/null +++ b/src/test/java/io/redis/examples/async/CmdsSetExample.java @@ -0,0 +1,87 @@ +// 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 + } + } +} From b0d4bd762ff7057020fd7bd9d09db158428e69d0 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Mon, 30 Jun 2025 16:08:23 +0100 Subject: [PATCH 2/3] DOC-5399 added reactive examples --- .../redis/examples/async/CmdsSetExample.java | 3 + .../examples/reactive/CmdsSetExample.java | 81 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/test/java/io/redis/examples/reactive/CmdsSetExample.java diff --git a/src/test/java/io/redis/examples/async/CmdsSetExample.java b/src/test/java/io/redis/examples/async/CmdsSetExample.java index e6b0644724..fbfeddc38d 100644 --- a/src/test/java/io/redis/examples/async/CmdsSetExample.java +++ b/src/test/java/io/redis/examples/async/CmdsSetExample.java @@ -83,5 +83,8 @@ public void run() { 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..2822f794ae --- /dev/null +++ b/src/test/java/io/redis/examples/reactive/CmdsSetExample.java @@ -0,0 +1,81 @@ +// 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(); + } + } +} \ No newline at end of file From 4196f3662d855480d2f047807b61c65d77b87522 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Mon, 30 Jun 2025 16:10:10 +0100 Subject: [PATCH 3/3] DOC-5399 applied formatting --- .../java/io/redis/examples/async/CmdsSetExample.java | 4 ++-- .../java/io/redis/examples/reactive/CmdsSetExample.java | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/test/java/io/redis/examples/async/CmdsSetExample.java b/src/test/java/io/redis/examples/async/CmdsSetExample.java index fbfeddc38d..07e6b6cae6 100644 --- a/src/test/java/io/redis/examples/async/CmdsSetExample.java +++ b/src/test/java/io/redis/examples/async/CmdsSetExample.java @@ -82,9 +82,9 @@ public void run() { // HIDE_START smembers.join(); // HIDE_END - } - finally { + } 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 index 2822f794ae..bb330f94d1 100644 --- a/src/test/java/io/redis/examples/reactive/CmdsSetExample.java +++ b/src/test/java/io/redis/examples/reactive/CmdsSetExample.java @@ -21,8 +21,7 @@ public void run() { RedisReactiveCommands reactiveCommands = connection.reactive(); // REMOVE_START // Clean up any existing data - Mono cleanup = reactiveCommands - .del("myset").then(); + Mono cleanup = reactiveCommands.del("myset").then(); cleanup.block(); // REMOVE_END @@ -73,9 +72,9 @@ public void run() { // HIDE_START smembers.block(); // HIDE_END - } - finally { + } finally { redisClient.shutdown(); } } -} \ No newline at end of file + +}