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 202998fdd..a534e4539 100644 --- a/src/main/java/org/springframework/data/redis/core/ReactiveRedisTemplate.java +++ b/src/main/java/org/springframework/data/redis/core/ReactiveRedisTemplate.java @@ -192,14 +192,7 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations { - - ReactiveRedisConnectionFactory factory = getConnectionFactory(); - ReactiveRedisConnection conn = factory.getReactiveConnection(); - ReactiveRedisConnection connToUse = preProcessConnection(conn, false); - - return (exposeConnection ? connToUse : createRedisConnectionProxy(connToUse)); - }), conn -> { + return Flux.usingWhen(getConnection(exposeConnection), conn -> { Publisher result = action.doInRedis(conn); return postProcessResult(result, conn, false); @@ -207,6 +200,21 @@ public class ReactiveRedisTemplate implements ReactiveRedisOperations getConnection(boolean exposeConnection) { + ReactiveRedisConnectionFactory factory = getConnectionFactory(); + ReactiveRedisConnection conn = factory.getReactiveConnection(); + ReactiveRedisConnection connToUse = preProcessConnection(conn, false); + + return Mono.just(exposeConnection ? connToUse : createRedisConnectionProxy(connToUse)); + } + /* * (non-Javadoc) * @see org.springframework.data.redis.core.ReactiveRedisOperations#convertAndSend(java.lang.String, java.lang.Object)