From 3889369710797bd36547289eb46e0640f7f3c79b Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 25 Sep 2019 10:25:17 +0200 Subject: [PATCH] DATAREDIS-1034 - Polishing. Pre-allocate operations objects for immutable serializationContext in ReactiveRedisTemplate. Original pull request: #479. --- .../redis/core/ReactiveRedisTemplate.java | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/springframework/data/redis/core/ReactiveRedisTemplate.java b/src/main/java/org/springframework/data/redis/core/ReactiveRedisTemplate.java index f0e0d1d05..6ef6c43ca 100644 --- a/src/main/java/org/springframework/data/redis/core/ReactiveRedisTemplate.java +++ b/src/main/java/org/springframework/data/redis/core/ReactiveRedisTemplate.java @@ -65,6 +65,13 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations serializationContext; private final boolean exposeConnection; private final ReactiveScriptExecutor reactiveScriptExecutor; + private final ReactiveGeoOperations geoOps; + private final ReactiveHashOperations hashOps; + private final ReactiveHyperLogLogOperations hllOps; + private final ReactiveListOperations listOps; + private final ReactiveSetOperations setOps; + private final ReactiveValueOperations valueOps; + private final ReactiveZSetOperations zsetOps; /** * Creates new {@link ReactiveRedisTemplate} using given {@link ReactiveRedisConnectionFactory} and @@ -96,6 +103,14 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations(connectionFactory, serializationContext); + + this.geoOps = opsForGeo(serializationContext); + this.hashOps = opsForHash(serializationContext); + this.hllOps = opsForHyperLogLog(serializationContext); + this.listOps = opsForList(serializationContext); + this.setOps = opsForSet(serializationContext); + this.valueOps = opsForValue(serializationContext); + this.zsetOps = opsForZSet(serializationContext); } /** @@ -350,7 +365,7 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations connection.keyCommands() // .mDel(Flux.from(keys).map(this::rawKey).buffer(128)) // .map(CommandResponse::getOutput)) // - .collect(Collectors.summingLong(value -> value)); + .collect(Collectors.summingLong(value -> value)); } /* @@ -385,7 +400,7 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations connection.keyCommands() // .mUnlink(Flux.from(keys).map(this::rawKey).buffer(128)) // .map(CommandResponse::getOutput)) // - .collect(Collectors.summingLong(value -> value)); + .collect(Collectors.summingLong(value -> value)); } /* @@ -537,7 +552,7 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations opsForGeo() { - return opsForGeo(serializationContext); + return geoOps; } /* @@ -554,8 +569,9 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations ReactiveHashOperations opsForHash() { - return opsForHash(serializationContext); + return (ReactiveHashOperations) hashOps; } /* @@ -574,7 +590,7 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations opsForHyperLogLog() { - return opsForHyperLogLog(serializationContext); + return hllOps; } /* @@ -593,7 +609,7 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations opsForList() { - return opsForList(serializationContext); + return listOps; } /* @@ -611,7 +627,7 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations opsForSet() { - return opsForSet(serializationContext); + return setOps; } /* @@ -629,7 +645,7 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations opsForValue() { - return opsForValue(serializationContext); + return valueOps; } /* @@ -647,7 +663,7 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations opsForZSet() { - return opsForZSet(serializationContext); + return zsetOps; } /*