From 5b887b42d0edf6f7179f24d95b80dc1146e7395e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=84=E5=AD=90=E6=96=8C?= <920698927@qq.com> Date: Mon, 19 Sep 2022 17:52:46 +0800 Subject: [PATCH] fix: setIfAbsent empty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit if setIfAbsent is fail,return default value "false" Signed-off-by: 庄子斌 --- .../RedissonReactiveStringCommands.java | 26 ++++++++----------- .../RedissonReactiveStringCommands.java | 26 ++++++++----------- .../RedissonReactiveStringCommands.java | 26 ++++++++----------- .../RedissonReactiveStringCommands.java | 26 ++++++++----------- .../RedissonReactiveStringCommands.java | 26 ++++++++----------- .../RedissonReactiveStringCommands.java | 26 ++++++++----------- .../RedissonReactiveStringCommands.java | 26 ++++++++----------- .../RedissonReactiveStringCommands.java | 25 ++++++++---------- 8 files changed, 88 insertions(+), 119 deletions(-) diff --git a/redisson-spring-data/redisson-spring-data-20/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java b/redisson-spring-data/redisson-spring-data-20/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java index 758302e06..83ea3f4d7 100644 --- a/redisson-spring-data/redisson-spring-data-20/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java +++ b/redisson-spring-data/redisson-spring-data-20/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java @@ -70,38 +70,34 @@ public class RedissonReactiveStringCommands extends RedissonBaseReactive impleme byte[] key = toByteArray(command.getKey()); byte[] value = toByteArray(command.getValue()); + + Mono m = Mono.empty(); if (!command.getExpiration().isPresent()) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } else if (command.getExpiration().get().isPersistent()) { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); } } else { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); } } - throw new IllegalArgumentException(); + return m.map(v -> new BooleanResponse<>(command, v)) + .switchIfEmpty(Mono.just(new BooleanResponse<>(command, Boolean.FALSE))); }); } diff --git a/redisson-spring-data/redisson-spring-data-21/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java b/redisson-spring-data/redisson-spring-data-21/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java index 08e0e3ccc..ad4198415 100644 --- a/redisson-spring-data/redisson-spring-data-21/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java +++ b/redisson-spring-data/redisson-spring-data-21/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java @@ -70,38 +70,34 @@ public class RedissonReactiveStringCommands extends RedissonBaseReactive impleme byte[] key = toByteArray(command.getKey()); byte[] value = toByteArray(command.getValue()); + + Mono m = Mono.empty(); if (!command.getExpiration().isPresent()) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } else if (command.getExpiration().get().isPersistent()) { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); } } else { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); } } - throw new IllegalArgumentException(); + return m.map(v -> new BooleanResponse<>(command, v)) + .switchIfEmpty(Mono.just(new BooleanResponse<>(command, Boolean.FALSE))); }); } diff --git a/redisson-spring-data/redisson-spring-data-22/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java b/redisson-spring-data/redisson-spring-data-22/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java index 08e0e3ccc..ad4198415 100644 --- a/redisson-spring-data/redisson-spring-data-22/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java +++ b/redisson-spring-data/redisson-spring-data-22/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java @@ -70,38 +70,34 @@ public class RedissonReactiveStringCommands extends RedissonBaseReactive impleme byte[] key = toByteArray(command.getKey()); byte[] value = toByteArray(command.getValue()); + + Mono m = Mono.empty(); if (!command.getExpiration().isPresent()) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } else if (command.getExpiration().get().isPersistent()) { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); } } else { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); } } - throw new IllegalArgumentException(); + return m.map(v -> new BooleanResponse<>(command, v)) + .switchIfEmpty(Mono.just(new BooleanResponse<>(command, Boolean.FALSE))); }); } diff --git a/redisson-spring-data/redisson-spring-data-23/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java b/redisson-spring-data/redisson-spring-data-23/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java index 08e0e3ccc..ad4198415 100644 --- a/redisson-spring-data/redisson-spring-data-23/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java +++ b/redisson-spring-data/redisson-spring-data-23/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java @@ -70,38 +70,34 @@ public class RedissonReactiveStringCommands extends RedissonBaseReactive impleme byte[] key = toByteArray(command.getKey()); byte[] value = toByteArray(command.getValue()); + + Mono m = Mono.empty(); if (!command.getExpiration().isPresent()) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } else if (command.getExpiration().get().isPersistent()) { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); } } else { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); } } - throw new IllegalArgumentException(); + return m.map(v -> new BooleanResponse<>(command, v)) + .switchIfEmpty(Mono.just(new BooleanResponse<>(command, Boolean.FALSE))); }); } diff --git a/redisson-spring-data/redisson-spring-data-24/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java b/redisson-spring-data/redisson-spring-data-24/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java index 08e0e3ccc..ad4198415 100644 --- a/redisson-spring-data/redisson-spring-data-24/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java +++ b/redisson-spring-data/redisson-spring-data-24/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java @@ -70,38 +70,34 @@ public class RedissonReactiveStringCommands extends RedissonBaseReactive impleme byte[] key = toByteArray(command.getKey()); byte[] value = toByteArray(command.getValue()); + + Mono m = Mono.empty(); if (!command.getExpiration().isPresent()) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } else if (command.getExpiration().get().isPersistent()) { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); } } else { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); } } - throw new IllegalArgumentException(); + return m.map(v -> new BooleanResponse<>(command, v)) + .switchIfEmpty(Mono.just(new BooleanResponse<>(command, Boolean.FALSE))); }); } diff --git a/redisson-spring-data/redisson-spring-data-25/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java b/redisson-spring-data/redisson-spring-data-25/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java index 08e0e3ccc..ad4198415 100644 --- a/redisson-spring-data/redisson-spring-data-25/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java +++ b/redisson-spring-data/redisson-spring-data-25/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java @@ -70,38 +70,34 @@ public class RedissonReactiveStringCommands extends RedissonBaseReactive impleme byte[] key = toByteArray(command.getKey()); byte[] value = toByteArray(command.getValue()); + + Mono m = Mono.empty(); if (!command.getExpiration().isPresent()) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } else if (command.getExpiration().get().isPersistent()) { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); } } else { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); } } - throw new IllegalArgumentException(); + return m.map(v -> new BooleanResponse<>(command, v)) + .switchIfEmpty(Mono.just(new BooleanResponse<>(command, Boolean.FALSE))); }); } diff --git a/redisson-spring-data/redisson-spring-data-26/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java b/redisson-spring-data/redisson-spring-data-26/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java index c882fb8a1..4c6c99044 100644 --- a/redisson-spring-data/redisson-spring-data-26/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java +++ b/redisson-spring-data/redisson-spring-data-26/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java @@ -70,38 +70,34 @@ public class RedissonReactiveStringCommands extends RedissonBaseReactive impleme byte[] key = toByteArray(command.getKey()); byte[] value = toByteArray(command.getValue()); + + Mono m = Mono.empty(); if (!command.getExpiration().isPresent()) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } else if (command.getExpiration().get().isPersistent()) { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); } } else { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); } } - throw new IllegalArgumentException(); + return m.map(v -> new BooleanResponse<>(command, v)) + .switchIfEmpty(Mono.just(new BooleanResponse<>(command, Boolean.FALSE))); }); } diff --git a/redisson-spring-data/redisson-spring-data-27/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java b/redisson-spring-data/redisson-spring-data-27/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java index c882fb8a1..35906f916 100644 --- a/redisson-spring-data/redisson-spring-data-27/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java +++ b/redisson-spring-data/redisson-spring-data-27/src/main/java/org/redisson/spring/data/connection/RedissonReactiveStringCommands.java @@ -70,38 +70,35 @@ public class RedissonReactiveStringCommands extends RedissonBaseReactive impleme byte[] key = toByteArray(command.getKey()); byte[] value = toByteArray(command.getValue()); + + Mono m = Mono.empty(); if (!command.getExpiration().isPresent()) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } else if (command.getExpiration().get().isPersistent()) { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "XX"); } } else { if (!command.getOption().isPresent() || command.getOption().get() == SetOption.UPSERT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds()); } if (command.getOption().get() == SetOption.SET_IF_ABSENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); - return m.map(v -> new BooleanResponse<>(command, v)); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "NX"); } if (command.getOption().get() == SetOption.SET_IF_PRESENT) { - Mono m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); + m = write(key, StringCodec.INSTANCE, SET, key, value, "PX", command.getExpiration().get().getExpirationTimeInMilliseconds(), "XX"); return m.map(v -> new BooleanResponse<>(command, v)); } } - throw new IllegalArgumentException(); + return m.map(v -> new BooleanResponse<>(command, v)) + .switchIfEmpty(Mono.just(new BooleanResponse<>(command, Boolean.FALSE))); }); }