Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cf160e7

Browse files
Add multiple reactive keys exist checker
1 parent 3ab09fb commit cf160e7

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

‎src/main/java/org/springframework/data/redis/connection/ReactiveKeyCommands.java‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,20 @@ default Mono<Boolean> exists(ByteBuffer key) {
175175

176176
return exists(Mono.just(new KeyCommand(key))).next().map(BooleanResponse::getOutput);
177177
}
178+
/**
179+
* Determine if given all {@literal keys} exist.
180+
*
181+
* @param keys must not be {@literal null} or {@literal empty}.
182+
* @return {@link Mono} emitting {@literal true} if all keys exist.
183+
* @see <a href="https://redis.io/commands/exists">Redis Documentation: EXISTS</a>
184+
*/
185+
default Mono<Boolean> exists(List<ByteBuffer> keys) {
186+
187+
Assert.notNull(keys, "Keys must not be null");
188+
Assert.notEmpty(keys, "Keys must not be empty");
189+
190+
return exists(Flux.fromIterable(keys).map(KeyCommand::new)).all(BooleanResponse::getOutput);
191+
}
178192

179193
/**
180194
* Determine if given {@literal key} exists.

‎src/test/java/org/springframework/data/redis/connection/lettuce/LettuceReactiveKeyCommandsIntegrationTests.java‎

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,28 @@ void existsShouldReturnFalseForNonExistingKeys() {
6666
connection.keyCommands().exists(KEY_1_BBUFFER).as(StepVerifier::create).expectNext(false).verifyComplete();
6767
}
6868

69+
@ParameterizedRedisTest
70+
void existsShouldReturnTrueWhenKeysExist() {
71+
72+
nativeCommands.set(KEY_1, VALUE_1);
73+
nativeCommands.set(KEY_2, VALUE_2);
74+
75+
connection.keyCommands().exists(Arrays.asList(KEY_1_BBUFFER, KEY_2_BBUFFER)).as(StepVerifier::create)
76+
.expectNext(true)
77+
.verifyComplete();
78+
}
79+
80+
@ParameterizedRedisTest
81+
void existsShouldReturnFalseWhenKeysDoNotExist() {
82+
83+
nativeCommands.set(KEY_1, VALUE_1);
84+
85+
connection.keyCommands().exists(Arrays.asList(KEY_1_BBUFFER, KEY_2_BBUFFER)).as(StepVerifier::create)
86+
.expectNext(false) //
87+
.verifyComplete();
88+
}
89+
90+
6991
@ParameterizedRedisTest // DATAREDIS-525
7092
void typeShouldReturnTypeCorrectly() {
7193

@@ -164,7 +186,7 @@ void renameShouldAlterKeyNameCorrectly() {
164186
connection.keyCommands().rename(KEY_1_BBUFFER, KEY_2_BBUFFER).as(StepVerifier::create).expectNext(true)
165187
.verifyComplete();
166188
assertThat(nativeCommands.exists(KEY_2)).isEqualTo(1L);
167-
assertThat(nativeCommands.exists(KEY_1)).isEqualTo(0L);
189+
assertThat(nativeCommands.exists(KEY_1)).isZero();
168190
}
169191

170192
@ParameterizedRedisTest // DATAREDIS-525
@@ -183,7 +205,7 @@ void renameNXShouldAlterKeyNameCorrectly() {
183205
.verifyComplete();
184206

185207
assertThat(nativeCommands.exists(KEY_2)).isEqualTo(1L);
186-
assertThat(nativeCommands.exists(KEY_1)).isEqualTo(0L);
208+
assertThat(nativeCommands.exists(KEY_1)).isZero();
187209
}
188210

189211
@ParameterizedRedisTest // DATAREDIS-525
@@ -395,7 +417,7 @@ void shouldMoveToDatabase() {
395417
.expectNext(true) //
396418
.expectComplete() //
397419
.verify();
398-
assertThat(nativeCommands.exists(KEY_1)).isEqualTo(0L);
420+
assertThat(nativeCommands.exists(KEY_1)).isZero();
399421
}
400422

401423
@ParameterizedRedisTest // DATAREDIS-694

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /