diff --git a/src/main/java/redis/clients/jedis/JedisPool.java b/src/main/java/redis/clients/jedis/JedisPool.java index 3cc9aad107..3339769bce 100644 --- a/src/main/java/redis/clients/jedis/JedisPool.java +++ b/src/main/java/redis/clients/jedis/JedisPool.java @@ -1,6 +1,8 @@ package redis.clients.jedis; import java.net.URI; +import java.util.function.Consumer; +import java.util.function.Function; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLParameters; import javax.net.ssl.SSLSocketFactory; @@ -392,4 +394,17 @@ public void returnResource(final Jedis resource) { } } } + + public void withJedisPoolDo(Consumer consumer) { + try (Jedis jedis = this.getResource()) { + consumer.accept(jedis); + } + } + + public K withJedisPoolGet(Function function) { + try (Jedis jedis = this.getResource()) { + return function.apply(jedis); + } + } + } diff --git a/src/test/java/redis/clients/jedis/JedisPoolTest.java b/src/test/java/redis/clients/jedis/JedisPoolTest.java index 29209eee59..a0d9942436 100644 --- a/src/test/java/redis/clients/jedis/JedisPoolTest.java +++ b/src/test/java/redis/clients/jedis/JedisPoolTest.java @@ -462,4 +462,30 @@ public void testResetValidCredentials() { } } } + + @Test + public void testWithJedisPoolDoWithConnection() { + JedisPool pool = new JedisPool(new JedisPoolConfig(), endpointStandalone0.getHost(), endpointStandalone0.getPort(), 2000); + pool.withJedisPoolDo(jedis -> { + jedis.auth(endpointStandalone0.getPassword()); + jedis.set("foo", "bar"); + assertEquals("bar", jedis.get("foo")); + }); + pool.close(); + assertTrue(pool.isClosed()); + } + + @Test + public void testWithJedisPoolGetWithConnection() { + JedisPool pool = new JedisPool(new JedisPoolConfig(), endpointStandalone0.getHost(), endpointStandalone0.getPort(), 2000); + String result = pool.withJedisPoolGet(jedis -> { + jedis.auth(endpointStandalone0.getPassword()); + jedis.set("foo", "bar"); + return jedis.get("foo"); + }); + assertEquals("bar", result); + pool.close(); + assertTrue(pool.isClosed()); + } + }