DATAREDIS-913 - Delete multiple keys through ReactiveRedisTemplate.delete(Publisher) and unlink(Publisher).
We now delete all keys that are emitted by the source publisher when invoking delete(Publisher) and unlink(Publisher). Both methods split incoming keys into chunks of 128 keys to keep a balance between latency and the issued command count. Previously, delete(Publisher) and unlink(Publisher) only deleted the first key. Original Pull Request: #379
This commit is contained in:
committed by
Christoph Strobl
parent
d248c0cd7c
commit
7ec4641cc1
@@ -18,6 +18,7 @@ package org.springframework.data.redis.core;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import static org.junit.Assume.*;
|
||||
|
||||
import org.springframework.data.redis.StringObjectFactory;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.test.StepVerifier;
|
||||
|
||||
@@ -217,6 +218,44 @@ public class ReactiveRedisTemplateIntegrationTests<K, V> {
|
||||
StepVerifier.create(redisTemplate.hasKey(key1)).expectNext(false).verifyComplete();
|
||||
StepVerifier.create(redisTemplate.hasKey(key2)).expectNext(false).verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-913
|
||||
public void unlinkManyPublisher() {
|
||||
|
||||
K key1 = keyFactory.instance();
|
||||
K key2 = keyFactory.instance();
|
||||
|
||||
assumeTrue(key1 instanceof String && valueFactory instanceof StringObjectFactory);
|
||||
|
||||
StepVerifier.create(redisTemplate.opsForValue().set(key1, valueFactory.instance())).expectNext(true)
|
||||
.verifyComplete();
|
||||
StepVerifier.create(redisTemplate.opsForValue().set(key2, valueFactory.instance())).expectNext(true)
|
||||
.verifyComplete();
|
||||
|
||||
StepVerifier.create(redisTemplate.unlink(redisTemplate.keys((K) "*"))).expectNext(2L).verifyComplete();
|
||||
|
||||
StepVerifier.create(redisTemplate.hasKey(key1)).expectNext(false).verifyComplete();
|
||||
StepVerifier.create(redisTemplate.hasKey(key2)).expectNext(false).verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-913
|
||||
public void deleteManyPublisher() {
|
||||
|
||||
K key1 = keyFactory.instance();
|
||||
K key2 = keyFactory.instance();
|
||||
|
||||
assumeTrue(key1 instanceof String && valueFactory instanceof StringObjectFactory);
|
||||
|
||||
StepVerifier.create(redisTemplate.opsForValue().set(key1, valueFactory.instance())).expectNext(true)
|
||||
.verifyComplete();
|
||||
StepVerifier.create(redisTemplate.opsForValue().set(key2, valueFactory.instance())).expectNext(true)
|
||||
.verifyComplete();
|
||||
|
||||
StepVerifier.create(redisTemplate.delete(redisTemplate.keys((K) "*"))).expectNext(2L).verifyComplete();
|
||||
|
||||
StepVerifier.create(redisTemplate.hasKey(key1)).expectNext(false).verifyComplete();
|
||||
StepVerifier.create(redisTemplate.hasKey(key2)).expectNext(false).verifyComplete();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-683
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
Reference in New Issue
Block a user