From a30598b7cbb24b133a35d472c8440395a65706cc Mon Sep 17 00:00:00 2001 From: Ming Date: Thu, 14 Aug 2014 10:37:28 +0800 Subject: [PATCH] add blpop/brpop with timeout parameter interface to JedisCommands --- src/main/java/redis/clients/jedis/Jedis.java | 27 +++++++++++++++++++ .../redis/clients/jedis/JedisCluster.java | 22 +++++++++++++++ .../redis/clients/jedis/JedisCommands.java | 4 +++ 3 files changed, 53 insertions(+) diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 49569e2..571ad82 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -3433,4 +3433,31 @@ public class Jedis extends BinaryJedis implements JedisCommands, client.pfmerge(destkey, sourcekeys); return client.getStatusCodeReply(); } + + @Override + public List blpop(int timeout, String key) { + checkIsInMulti(); + List args = new ArrayList(); + args.add(key); + args.add(String.valueOf(timeout)); + client.blpop(args.toArray(new String[args.size()])); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + + @Override + public List brpop(int timeout, String key) { + checkIsInMulti(); + List args = new ArrayList(); + args.add(key); + args.add(String.valueOf(timeout)); + client.brpop(args.toArray(new String[args.size()])); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + } diff --git a/src/main/java/redis/clients/jedis/JedisCluster.java b/src/main/java/redis/clients/jedis/JedisCluster.java index 8e1202b..902a096 100644 --- a/src/main/java/redis/clients/jedis/JedisCluster.java +++ b/src/main/java/redis/clients/jedis/JedisCluster.java @@ -1474,4 +1474,26 @@ public class JedisCluster implements JedisCommands, BasicCommands { } }.run(key); } + + @Override + public List blpop(final int timeout, final String key) { + return new JedisClusterCommand>(connectionHandler, + timeout, maxRedirections) { + @Override + public List execute(Jedis connection) { + return connection.blpop(timeout,key); + } + }.run(null); + } + + @Override + public List brpop(final int timeout, final String key) { + return new JedisClusterCommand>(connectionHandler, + timeout, maxRedirections) { + @Override + public List execute(Jedis connection) { + return connection.brpop(timeout,key); + } + }.run(null); + } } diff --git a/src/main/java/redis/clients/jedis/JedisCommands.java b/src/main/java/redis/clients/jedis/JedisCommands.java index b5263f4..b4b71e0 100644 --- a/src/main/java/redis/clients/jedis/JedisCommands.java +++ b/src/main/java/redis/clients/jedis/JedisCommands.java @@ -203,8 +203,12 @@ public interface JedisCommands { Long rpushx(String key, String... string); List blpop(String arg); + + List blpop(int timeout, String key); List brpop(String arg); + + List brpop(int timeout, String key); Long del(String key);