diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index 630ecbfc3a..e5d38f8f74 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -503,6 +503,14 @@ public void zscore(final byte[] key, final byte[] member) { sendCommand(ZSCORE, key, member); } + public void zpopmax(final byte[] key) { + sendCommand(ZPOPMAX, key); + } + + public void zpopmax(final byte[] key, final int count) { + sendCommand(ZPOPMAX, key, toByteArray(count)); + } + public void zpopmin(final byte[] key) { sendCommand(ZPOPMIN, key); } diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 2129f09dd3..17358d911c 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -1846,14 +1846,28 @@ public Double zscore(final byte[] key, final byte[] member) { } @Override - public Set zpopmin(final byte[] key) { + public Tuple zpopmax(final byte[] key) { checkIsInMultiOrPipeline(); - client.zpopmin(key); + client.zpopmax(key); + return BuilderFactory.TUPLE.build(client.getBinaryMultiBulkReply()); + } + + @Override + public Set zpopmax(final byte[] key, final int count) { + checkIsInMultiOrPipeline(); + client.zpopmax(key, count); return getTupledSet(); } @Override - public Set zpopmin(final byte[] key, final long count) { + public Tuple zpopmin(final byte[] key) { + checkIsInMultiOrPipeline(); + client.zpopmin(key); + return BuilderFactory.TUPLE.build(client.getBinaryMultiBulkReply()); + } + + @Override + public Set zpopmin(final byte[] key, final int count) { checkIsInMultiOrPipeline(); client.zpopmin(key, count); return getTupledSet(); diff --git a/src/main/java/redis/clients/jedis/BinaryJedisCluster.java b/src/main/java/redis/clients/jedis/BinaryJedisCluster.java index 2bb5a7658a..c5dc62fe1d 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedisCluster.java +++ b/src/main/java/redis/clients/jedis/BinaryJedisCluster.java @@ -908,21 +908,41 @@ public Double execute(Jedis connection) { } @Override - public Set zpopmin(final byte[] key, final long count) { + public Tuple zpopmax(final byte[] key) { + return new JedisClusterCommand(connectionHandler, maxAttempts) { + @Override + public Tuple execute(Jedis connection) { + return connection.zpopmax(key); + } + }.runBinary(key); + } + + @Override + public Set zpopmax(final byte[] key, final int count) { return new JedisClusterCommand>(connectionHandler, maxAttempts) { @Override public Set execute(Jedis connection) { - return connection.zpopmin(key, count); + return connection.zpopmax(key, count); + } + }.runBinary(key); + } + + @Override + public Tuple zpopmin(final byte[] key) { + return new JedisClusterCommand(connectionHandler, maxAttempts) { + @Override + public Tuple execute(Jedis connection) { + return connection.zpopmin(key); } }.runBinary(key); } @Override - public Set zpopmin(final byte[] key) { + public Set zpopmin(final byte[] key, final int count) { return new JedisClusterCommand>(connectionHandler, maxAttempts) { @Override public Set execute(Jedis connection) { - return connection.zpopmin(key); + return connection.zpopmin(key, count); } }.runBinary(key); } diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index 381591a125..e7f530de98 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -539,13 +539,25 @@ public Double zscore(final byte[] key, final byte[] member) { } @Override - public Set zpopmin(final byte[] key) { + public Tuple zpopmax(final byte[] key) { + Jedis j = getShard(key); + return j.zpopmax(key); + } + + @Override + public Set zpopmax(final byte[] key, final int count) { + Jedis j = getShard(key); + return j.zpopmax(key, count); + } + + @Override + public Tuple zpopmin(final byte[] key) { Jedis j = getShard(key); return j.zpopmin(key); } @Override - public Set zpopmin(final byte[] key, final long count) { + public Set zpopmin(final byte[] key, final int count) { Jedis j = getShard(key); return j.zpopmin(key, count); } diff --git a/src/main/java/redis/clients/jedis/BuilderFactory.java b/src/main/java/redis/clients/jedis/BuilderFactory.java index c76590b623..237d2f39c4 100644 --- a/src/main/java/redis/clients/jedis/BuilderFactory.java +++ b/src/main/java/redis/clients/jedis/BuilderFactory.java @@ -285,6 +285,24 @@ public String toString() { }; + public static final Builder TUPLE = new Builder() { + @Override + @SuppressWarnings("unchecked") + public Tuple build(Object data) { + List l = (List) data; // never null + if (l.isEmpty()) { + return null; + } + return new Tuple(l.get(0), DOUBLE.build(l.get(1))); + } + + @Override + public String toString() { + return "Tuple"; + } + + }; + public static final Builder EVAL_RESULT = new Builder() { @Override diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index 83058f6927..fdff8f27e9 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -465,6 +465,16 @@ public void zscore(final String key, final String member) { zscore(SafeEncoder.encode(key), SafeEncoder.encode(member)); } + @Override + public void zpopmax(final String key) { + zpopmax(SafeEncoder.encode(key)); + } + + @Override + public void zpopmax(final String key, final int count) { + zpopmax(SafeEncoder.encode(key), count); + } + @Override public void zpopmin(final String key) { zpopmin(SafeEncoder.encode(key)); diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index eef049d5cc..8cfa8edce0 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -1677,14 +1677,28 @@ public Double zscore(final String key, final String member) { } @Override - public Set zpopmin(final String key) { + public Tuple zpopmax(final String key) { checkIsInMultiOrPipeline(); - client.zpopmin(key); + client.zpopmax(key); + return BuilderFactory.TUPLE.build(client.getBinaryMultiBulkReply()); + } + + @Override + public Set zpopmax(final String key, final int count) { + checkIsInMultiOrPipeline(); + client.zpopmax(key, count); return getTupledSet(); } @Override - public Set zpopmin(final String key, final long count) { + public Tuple zpopmin(final String key) { + checkIsInMultiOrPipeline(); + client.zpopmin(key); + return BuilderFactory.TUPLE.build(client.getBinaryMultiBulkReply()); + } + + @Override + public Set zpopmin(final String key, final int count) { checkIsInMultiOrPipeline(); client.zpopmin(key, count); return getTupledSet(); diff --git a/src/main/java/redis/clients/jedis/JedisCluster.java b/src/main/java/redis/clients/jedis/JedisCluster.java index 812af272b9..de33155116 100644 --- a/src/main/java/redis/clients/jedis/JedisCluster.java +++ b/src/main/java/redis/clients/jedis/JedisCluster.java @@ -945,6 +945,46 @@ public Double execute(Jedis connection) { }.run(key); } + @Override + public Tuple zpopmax(final String key) { + return new JedisClusterCommand(connectionHandler, maxAttempts) { + @Override + public Tuple execute(Jedis connection) { + return connection.zpopmax(key); + } + }.run(key); + } + + @Override + public Set zpopmax(final String key, final int count) { + return new JedisClusterCommand>(connectionHandler, maxAttempts) { + @Override + public Set execute(Jedis connection) { + return connection.zpopmax(key, count); + } + }.run(key); + } + + @Override + public Tuple zpopmin(final String key) { + return new JedisClusterCommand(connectionHandler, maxAttempts) { + @Override + public Tuple execute(Jedis connection) { + return connection.zpopmin(key); + } + }.run(key); + } + + @Override + public Set zpopmin(final String key, final int count) { + return new JedisClusterCommand>(connectionHandler, maxAttempts) { + @Override + public Set execute(Jedis connection) { + return connection.zpopmin(key, count); + } + }.run(key); + } + @Override public List sort(final String key) { return new JedisClusterCommand>(connectionHandler, maxAttempts) { diff --git a/src/main/java/redis/clients/jedis/PipelineBase.java b/src/main/java/redis/clients/jedis/PipelineBase.java index 968aad5d60..9e09a1759a 100644 --- a/src/main/java/redis/clients/jedis/PipelineBase.java +++ b/src/main/java/redis/clients/jedis/PipelineBase.java @@ -1301,13 +1301,49 @@ public Response zscore(final byte[] key, final byte[] member) { } @Override - public Response> zpopmin(final String key) { + public Response zpopmax(final String key) { + getClient(key).zpopmax(key); + return getResponse(BuilderFactory.TUPLE); + } + + @Override + public Response zpopmax(final byte[] key) { + getClient(key).zpopmax(key); + return getResponse(BuilderFactory.TUPLE); + } + + @Override + public Response> zpopmax(final String key, final int count) { + getClient(key).zpopmax(key, count); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + @Override + public Response> zpopmax(final byte[] key, final int count) { + getClient(key).zpopmax(key, count); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + @Override + public Response zpopmin(final String key) { getClient(key).zpopmin(key); + return getResponse(BuilderFactory.TUPLE); + } + + @Override + public Response zpopmin(final byte[] key) { + getClient(key).zpopmin(key); + return getResponse(BuilderFactory.TUPLE); + } + + @Override + public Response> zpopmin(final byte[] key, final int count) { + getClient(key).zpopmin(key, count); return getResponse(BuilderFactory.TUPLE_ZSET); } @Override - public Response> zpopmin(final String key, final long count) { + public Response> zpopmin(final String key, final int count) { getClient(key).zpopmin(key, count); return getResponse(BuilderFactory.TUPLE_ZSET); } diff --git a/src/main/java/redis/clients/jedis/Protocol.java b/src/main/java/redis/clients/jedis/Protocol.java index ffea7a2a6d..7e62f9739b 100644 --- a/src/main/java/redis/clients/jedis/Protocol.java +++ b/src/main/java/redis/clients/jedis/Protocol.java @@ -249,13 +249,13 @@ public static enum Command implements ProtocolCommand { HINCRBY, HEXISTS, HDEL, HLEN, HKEYS, HVALS, HGETALL, RPUSH, LPUSH, LLEN, LRANGE, LTRIM, LINDEX, LSET, LREM, LPOP, RPOP, RPOPLPUSH, SADD, SMEMBERS, SREM, SPOP, SMOVE, SCARD, SISMEMBER, SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SDIFF, SDIFFSTORE, SRANDMEMBER, ZADD, ZRANGE, ZREM, ZINCRBY, - ZRANK, ZREVRANK, ZREVRANGE, ZCARD, ZSCORE, ZPOPMIN, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, - BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBSUB, ZCOUNT, - ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, - ZLEXCOUNT, ZRANGEBYLEX, ZREVRANGEBYLEX, ZREMRANGEBYLEX, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, - SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, - DEBUG, BRPOPLPUSH, SETBIT, GETBIT, BITPOS, SETRANGE, GETRANGE, EVAL, EVALSHA, SCRIPT, SLOWLOG, - OBJECT, BITCOUNT, BITOP, SENTINEL, DUMP, RESTORE, PEXPIRE, PEXPIREAT, PTTL, INCRBYFLOAT, + ZRANK, ZREVRANK, ZREVRANGE, ZCARD, ZSCORE, ZPOPMAX, ZPOPMIN, MULTI, DISCARD, EXEC, WATCH, + UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, + PUBSUB, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, + ZINTERSTORE, ZLEXCOUNT, ZRANGEBYLEX, ZREVRANGEBYLEX, ZREMRANGEBYLEX, SAVE, BGSAVE, BGREWRITEAOF, + LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, + LINSERT, DEBUG, BRPOPLPUSH, SETBIT, GETBIT, BITPOS, SETRANGE, GETRANGE, EVAL, EVALSHA, SCRIPT, + SLOWLOG, OBJECT, BITCOUNT, BITOP, SENTINEL, DUMP, RESTORE, PEXPIRE, PEXPIREAT, PTTL, INCRBYFLOAT, PSETEX, CLIENT, TIME, MIGRATE, HINCRBYFLOAT, SCAN, HSCAN, SSCAN, ZSCAN, WAIT, CLUSTER, ASKING, PFADD, PFCOUNT, PFMERGE, READONLY, GEOADD, GEODIST, GEOHASH, GEOPOS, GEORADIUS, GEORADIUS_RO, GEORADIUSBYMEMBER, GEORADIUSBYMEMBER_RO, MODULE, BITFIELD, HSTRLEN, TOUCH, SWAPDB, MEMORY, diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index d1424d69fc..d35fc724da 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -574,13 +574,25 @@ public Double zscore(final String key, final String member) { } @Override - public Set zpopmin(final String key) { + public Tuple zpopmax(final String key) { + Jedis j = getShard(key); + return j.zpopmax(key); + } + + @Override + public Set zpopmax(final String key, final int count) { + Jedis j = getShard(key); + return j.zpopmax(key, count); + } + + @Override + public Tuple zpopmin(final String key) { Jedis j = getShard(key); return j.zpopmin(key); } @Override - public Set zpopmin(final String key, final long count) { + public Set zpopmin(final String key, final int count) { Jedis j = getShard(key); return j.zpopmin(key, count); } diff --git a/src/main/java/redis/clients/jedis/commands/BinaryJedisClusterCommands.java b/src/main/java/redis/clients/jedis/commands/BinaryJedisClusterCommands.java index 49ce60308b..746de7a8c7 100644 --- a/src/main/java/redis/clients/jedis/commands/BinaryJedisClusterCommands.java +++ b/src/main/java/redis/clients/jedis/commands/BinaryJedisClusterCommands.java @@ -179,9 +179,13 @@ public interface BinaryJedisClusterCommands { Double zscore(byte[] key, byte[] member); - Set zpopmin(byte[] key); + Tuple zpopmax(byte[] key); - Set zpopmin(byte[] key, long count); + Set zpopmax(byte[] key, int count); + + Tuple zpopmin(byte[] key); + + Set zpopmin(byte[] key, int count); List sort(byte[] key); diff --git a/src/main/java/redis/clients/jedis/commands/BinaryJedisCommands.java b/src/main/java/redis/clients/jedis/commands/BinaryJedisCommands.java index a71f164819..30d617fa9a 100644 --- a/src/main/java/redis/clients/jedis/commands/BinaryJedisCommands.java +++ b/src/main/java/redis/clients/jedis/commands/BinaryJedisCommands.java @@ -184,9 +184,13 @@ public interface BinaryJedisCommands { Double zscore(byte[] key, byte[] member); - Set zpopmin(byte[] key); + Tuple zpopmax(byte[] key); - Set zpopmin(byte[] key, long count); + Set zpopmax(byte[] key, int count); + + Tuple zpopmin(byte[] key); + + Set zpopmin(byte[] key, int count); List sort(byte[] key); diff --git a/src/main/java/redis/clients/jedis/commands/BinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/commands/BinaryRedisPipeline.java index 4bd673eeb7..5bf5646fb6 100644 --- a/src/main/java/redis/clients/jedis/commands/BinaryRedisPipeline.java +++ b/src/main/java/redis/clients/jedis/commands/BinaryRedisPipeline.java @@ -233,6 +233,14 @@ Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] m Response zscore(byte[] key, byte[] member); + Response zpopmax(byte[] key); + + Response> zpopmax(byte[] key, int count); + + Response zpopmin(byte[] key); + + Response> zpopmin(byte[] key, int count); + Response zlexcount(byte[] key, byte[] min, byte[] max); Response> zrangeByLex(byte[] key, byte[] min, byte[] max); diff --git a/src/main/java/redis/clients/jedis/commands/Commands.java b/src/main/java/redis/clients/jedis/commands/Commands.java index 36af87239c..cded4c1027 100644 --- a/src/main/java/redis/clients/jedis/commands/Commands.java +++ b/src/main/java/redis/clients/jedis/commands/Commands.java @@ -196,6 +196,10 @@ public interface Commands { void zcard(String key); void zscore(String key, String member); + + void zpopmax(String key); + + void zpopmax(String key, int count); void zpopmin(String key); diff --git a/src/main/java/redis/clients/jedis/commands/JedisClusterCommands.java b/src/main/java/redis/clients/jedis/commands/JedisClusterCommands.java index 09ba39f862..fb171bd2bb 100644 --- a/src/main/java/redis/clients/jedis/commands/JedisClusterCommands.java +++ b/src/main/java/redis/clients/jedis/commands/JedisClusterCommands.java @@ -178,6 +178,14 @@ public interface JedisClusterCommands { Double zscore(String key, String member); + Tuple zpopmax(String key); + + Set zpopmax(String key, int count); + + Tuple zpopmin(String key); + + Set zpopmin(String key, int count); + List sort(String key); List sort(String key, SortingParams sortingParameters); diff --git a/src/main/java/redis/clients/jedis/commands/JedisCommands.java b/src/main/java/redis/clients/jedis/commands/JedisCommands.java index d07bb7da35..6b3506905b 100644 --- a/src/main/java/redis/clients/jedis/commands/JedisCommands.java +++ b/src/main/java/redis/clients/jedis/commands/JedisCommands.java @@ -187,9 +187,13 @@ public interface JedisCommands { Double zscore(String key, String member); - Set zpopmin(String key); + Tuple zpopmax(String key); - Set zpopmin(String key, long count); + Set zpopmax(String key, int count); + + Tuple zpopmin(String key); + + Set zpopmin(String key, int count); List sort(String key); diff --git a/src/main/java/redis/clients/jedis/commands/RedisPipeline.java b/src/main/java/redis/clients/jedis/commands/RedisPipeline.java index f190d833d2..92647e0ebe 100644 --- a/src/main/java/redis/clients/jedis/commands/RedisPipeline.java +++ b/src/main/java/redis/clients/jedis/commands/RedisPipeline.java @@ -228,9 +228,13 @@ Response> zrevrangeByScoreWithScores(String key, String max, String m Response zscore(String key, String member); - Response> zpopmin(String key); + Response zpopmax(String key); - Response> zpopmin(String key, long count); + Response> zpopmax(String key, int count); + + Response zpopmin(String key); + + Response> zpopmin(String key, int count); Response zlexcount(String key, String min, String max); diff --git a/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java index 624af6d87d..77c2bc3691 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java @@ -543,6 +543,119 @@ public void zscore() { } + @Test + public void zpopmax() { + jedis.zadd("foo", 1d, "a"); + jedis.zadd("foo", 10d, "b"); + jedis.zadd("foo", 0.1d, "c"); + jedis.zadd("foo", 2d, "d"); + + Tuple actual = jedis.zpopmax("foo"); + Tuple expected = new Tuple("b", 10d); + assertEquals(expected, actual); + + actual = jedis.zpopmax("foo"); + expected = new Tuple("d", 2d); + assertEquals(expected, actual); + + actual = jedis.zpopmax("foo"); + expected = new Tuple("a", 1d); + assertEquals(expected, actual); + + actual = jedis.zpopmax("foo"); + expected = new Tuple("c", 0.1d); + assertEquals(expected, actual); + + // Empty + actual = jedis.zpopmax("foo"); + assertNull(actual); + + // Binary + jedis.zadd(bfoo, 1d, ba); + jedis.zadd(bfoo, 10d, bb); + jedis.zadd(bfoo, 0.1d, bc); + jedis.zadd(bfoo, 2d, ba); + + // First + actual = jedis.zpopmax(bfoo); + expected = new Tuple(bb, 10d); + assertEquals(expected, actual); + + // Second + actual = jedis.zpopmax(bfoo); + expected = new Tuple(ba, 2d); + assertEquals(expected, actual); + + // Third + actual = jedis.zpopmax(bfoo); + expected = new Tuple(bc, 0.1d); + assertEquals(expected, actual); + + // Empty + actual = jedis.zpopmax(bfoo); + assertNull(actual); + } + + @Test + public void zpopmaxWithCount() { + jedis.zadd("foo", 1d, "a"); + jedis.zadd("foo", 10d, "b"); + jedis.zadd("foo", 0.1d, "c"); + jedis.zadd("foo", 2d, "d"); + jedis.zadd("foo", 0.03, "e"); + + Set actual = jedis.zpopmax("foo", 2); + assertEquals(2, actual.size()); + + Set expected = new LinkedHashSet(); + expected.add(new Tuple("b", 10d)); + expected.add(new Tuple("d", 2d)); + assertEquals(expected, actual); + + actual = jedis.zpopmax("foo", 3); + assertEquals(3, actual.size()); + + expected.clear(); + expected.add(new Tuple("a", 1d)); + expected.add(new Tuple("c", 0.1d)); + expected.add(new Tuple("e", 0.03d)); + assertEquals(expected, actual); + + // Empty + actual = jedis.zpopmax("foo", 1); + expected.clear(); + assertEquals(expected, actual); + + // Binary + jedis.zadd(bfoo, 1d, ba); + jedis.zadd(bfoo, 10d, bb); + jedis.zadd(bfoo, 0.1d, bc); + jedis.zadd(bfoo, 2d, ba); + + // First + actual = jedis.zpopmax(bfoo, 1); + expected.clear(); + expected.add(new Tuple(bb, 10d)); + assertEquals(expected, actual); + + // Second + actual = jedis.zpopmax(bfoo, 1); + expected.clear(); + expected.add(new Tuple(ba, 2d)); + assertEquals(expected, actual); + + // Last 2 (just 1, because 1 was overwritten) + actual = jedis.zpopmax(bfoo, 1); + expected.clear(); + expected.add(new Tuple(bc, 0.1d)); + assertEquals(expected, actual); + + // Empty + actual = jedis.zpopmax(bfoo, 1); + expected.clear(); + assertEquals(expected, actual); + } + @Test public void zpopmin() { @@ -559,12 +672,8 @@ public void zpopmin() { assertEquals(expected, range); - range = jedis.zpopmin("foo"); - - expected = new LinkedHashSet(); - expected.add(new Tuple("b", 10d)); - - assertEquals(expected, range); + Tuple tuple = jedis.zpopmin("foo"); + assertEquals(new Tuple("b", 10d), tuple); // Binary @@ -581,15 +690,11 @@ public void zpopmin() { assertEquals(bexpected, brange); - brange = jedis.zpopmin(bfoo); - - bexpected = new LinkedHashSet(); - bexpected.add(new Tuple(bb, 10d)); - - assertEquals(bexpected, brange); + tuple = jedis.zpopmin(bfoo); + assertEquals(new Tuple(bb, 10d), tuple); } - @Test + @Test public void zcount() { jedis.zadd("foo", 1d, "a"); jedis.zadd("foo", 10d, "b");