diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index c80d938..e7abbad 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -3469,4 +3469,30 @@ public class Jedis extends BinaryJedis implements JedisCommands, 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 f939d54..91fb28b 100644 --- a/src/main/java/redis/clients/jedis/JedisCluster.java +++ b/src/main/java/redis/clients/jedis/JedisCluster.java @@ -1536,4 +1536,25 @@ public class JedisCluster implements JedisCommands, BasicCommands, Closeable { }.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 a657468..17dc08d 100644 --- a/src/main/java/redis/clients/jedis/JedisCommands.java +++ b/src/main/java/redis/clients/jedis/JedisCommands.java @@ -212,8 +212,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); diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index 19debb9..333a63e 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -125,12 +125,18 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands, Jedis j = getShard(arg); return j.blpop(arg); } - + public List blpop(int timeout,String key){ + Jedis j = getShard(key); + return j.blpop(timeout,key); + } public List brpop(String arg) { Jedis j = getShard(arg); return j.brpop(arg); } - + public List brpop(int timeout,String key) { + Jedis j = getShard(key); + return j.brpop(timeout,key); + } public Long decrBy(String key, long integer) { Jedis j = getShard(key); return j.decrBy(key, integer);