Skip to content

Commit 3889369

Browse files
committed
DATAREDIS-1034 - Polishing.
Pre-allocate operations objects for immutable serializationContext in ReactiveRedisTemplate. Original pull request: #479.
1 parent 2c0e87a commit 3889369

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

src/main/java/org/springframework/data/redis/core/ReactiveRedisTemplate.java

+25-9
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
6565
private final RedisSerializationContext<K, V> serializationContext;
6666
private final boolean exposeConnection;
6767
private final ReactiveScriptExecutor<K> reactiveScriptExecutor;
68+
private final ReactiveGeoOperations<K, V> geoOps;
69+
private final ReactiveHashOperations<K, ?, ?> hashOps;
70+
private final ReactiveHyperLogLogOperations<K, V> hllOps;
71+
private final ReactiveListOperations<K, V> listOps;
72+
private final ReactiveSetOperations<K, V> setOps;
73+
private final ReactiveValueOperations<K, V> valueOps;
74+
private final ReactiveZSetOperations<K, V> zsetOps;
6875

6976
/**
7077
* Creates new {@link ReactiveRedisTemplate} using given {@link ReactiveRedisConnectionFactory} and
@@ -96,6 +103,14 @@ public ReactiveRedisTemplate(ReactiveRedisConnectionFactory connectionFactory,
96103
this.serializationContext = serializationContext;
97104
this.exposeConnection = exposeConnection;
98105
this.reactiveScriptExecutor = new DefaultReactiveScriptExecutor<>(connectionFactory, serializationContext);
106+
107+
this.geoOps = opsForGeo(serializationContext);
108+
this.hashOps = opsForHash(serializationContext);
109+
this.hllOps = opsForHyperLogLog(serializationContext);
110+
this.listOps = opsForList(serializationContext);
111+
this.setOps = opsForSet(serializationContext);
112+
this.valueOps = opsForValue(serializationContext);
113+
this.zsetOps = opsForZSet(serializationContext);
99114
}
100115

101116
/**
@@ -350,7 +365,7 @@ public Mono<Long> delete(Publisher<K> keys) {
350365
return createFlux(connection -> connection.keyCommands() //
351366
.mDel(Flux.from(keys).map(this::rawKey).buffer(128)) //
352367
.map(CommandResponse::getOutput)) //
353-
.collect(Collectors.summingLong(value -> value));
368+
.collect(Collectors.summingLong(value -> value));
354369
}
355370

356371
/*
@@ -385,7 +400,7 @@ public Mono<Long> unlink(Publisher<K> keys) {
385400
return createFlux(connection -> connection.keyCommands() //
386401
.mUnlink(Flux.from(keys).map(this::rawKey).buffer(128)) //
387402
.map(CommandResponse::getOutput)) //
388-
.collect(Collectors.summingLong(value -> value));
403+
.collect(Collectors.summingLong(value -> value));
389404
}
390405

391406
/*
@@ -537,7 +552,7 @@ protected ReactiveRedisConnection createRedisConnectionProxy(ReactiveRedisConnec
537552
*/
538553
@Override
539554
public ReactiveGeoOperations<K, V> opsForGeo() {
540-
return opsForGeo(serializationContext);
555+
return geoOps;
541556
}
542557

543558
/*
@@ -554,8 +569,9 @@ public <K1, V1> ReactiveGeoOperations<K1, V1> opsForGeo(RedisSerializationContex
554569
* @see org.springframework.data.redis.core.ReactiveRedisOperations#opsForHash()
555570
*/
556571
@Override
572+
@SuppressWarnings("unchecked")
557573
public <HK, HV> ReactiveHashOperations<K, HK, HV> opsForHash() {
558-
return opsForHash(serializationContext);
574+
return (ReactiveHashOperations<K, HK, HV>) hashOps;
559575
}
560576

561577
/*
@@ -574,7 +590,7 @@ public <K1, HK, HV> ReactiveHashOperations<K1, HK, HV> opsForHash(
574590
*/
575591
@Override
576592
public ReactiveHyperLogLogOperations<K, V> opsForHyperLogLog() {
577-
return opsForHyperLogLog(serializationContext);
593+
return hllOps;
578594
}
579595

580596
/*
@@ -593,7 +609,7 @@ public <K1, V1> ReactiveHyperLogLogOperations<K1, V1> opsForHyperLogLog(
593609
*/
594610
@Override
595611
public ReactiveListOperations<K, V> opsForList() {
596-
return opsForList(serializationContext);
612+
return listOps;
597613
}
598614

599615
/*
@@ -611,7 +627,7 @@ public <K1, V1> ReactiveListOperations<K1, V1> opsForList(RedisSerializationCont
611627
*/
612628
@Override
613629
public ReactiveSetOperations<K, V> opsForSet() {
614-
return opsForSet(serializationContext);
630+
return setOps;
615631
}
616632

617633
/*
@@ -629,7 +645,7 @@ public <K1, V1> ReactiveSetOperations<K1, V1> opsForSet(RedisSerializationContex
629645
*/
630646
@Override
631647
public ReactiveValueOperations<K, V> opsForValue() {
632-
return opsForValue(serializationContext);
648+
return valueOps;
633649
}
634650

635651
/*
@@ -647,7 +663,7 @@ public <K1, V1> ReactiveValueOperations<K1, V1> opsForValue(RedisSerializationCo
647663
*/
648664
@Override
649665
public ReactiveZSetOperations<K, V> opsForZSet() {
650-
return opsForZSet(serializationContext);
666+
return zsetOps;
651667
}
652668

653669
/*

0 commit comments

Comments
 (0)