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 82627e864..e4788e914 100644 --- a/src/main/java/org/springframework/data/redis/core/ReactiveRedisTemplate.java +++ b/src/main/java/org/springframework/data/redis/core/ReactiveRedisTemplate.java @@ -232,14 +232,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); @@ -247,6 +240,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)