From b05d9adfb0c4a9fe430149bc75f0615ad9a56f97 Mon Sep 17 00:00:00 2001 From: Marcos Nils Date: Sun, 26 Jan 2014 13:53:34 -0300 Subject: [PATCH] Change zadd parameter order to allow duplicated scoremembers but not members --- .../redis/clients/jedis/BinaryClient.java | 27 +++++++-------- .../java/redis/clients/jedis/BinaryJedis.java | 2 +- .../clients/jedis/BinaryJedisCommands.java | 34 ++++++++++--------- .../clients/jedis/BinaryShardedJedis.java | 2 +- src/main/java/redis/clients/jedis/Client.java | 18 +++++----- .../java/redis/clients/jedis/Commands.java | 4 +-- src/main/java/redis/clients/jedis/Jedis.java | 8 ++--- .../redis/clients/jedis/JedisCluster.java | 2 +- .../redis/clients/jedis/JedisCommands.java | 2 +- .../redis/clients/jedis/PipelineBase.java | 2 +- .../redis/clients/jedis/ShardedJedis.java | 8 ++--- .../tests/commands/VariadicCommandsTest.java | 20 +++++------ 12 files changed, 66 insertions(+), 63 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index f1b167a..5e20ce1 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -376,23 +376,22 @@ public class BinaryClient extends Connection { public void zadd(final byte[] key, final double score, final byte[] member) { sendCommand(ZADD, key, toByteArray(score), member); } + + public void zaddBinary(final byte[] key, final Map< byte[], Double> scoreMembers) { + + ArrayList args = new ArrayList(scoreMembers.size() * 2 + 1); + args.add(key); - public void zaddBinary(final byte[] key, Map scoreMembers) { - ArrayList args = new ArrayList( - scoreMembers.size() * 2 + 1); + for (Map.Entry entry : scoreMembers.entrySet()) { + args.add(toByteArray(entry.getValue())); + args.add(entry.getKey()); + } - args.add(key); + byte[][] argsArray = new byte[args.size()][]; + args.toArray(argsArray); - for (Map.Entry entry : scoreMembers.entrySet()) { - args.add(toByteArray(entry.getKey())); - args.add(entry.getValue()); - } - - byte[][] argsArray = new byte[args.size()][]; - args.toArray(argsArray); - - sendCommand(ZADD, argsArray); - } + sendCommand(ZADD, argsArray); + } public void zrange(final byte[] key, final long start, final long end) { sendCommand(ZRANGE, key, toByteArray(start), toByteArray(end)); diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 7c7debf..0aebaf5 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -1502,7 +1502,7 @@ public class BinaryJedis implements BasicCommands, BinaryJedisCommands, MultiKey return client.getIntegerReply(); } - public Long zadd(final byte[] key, final Map scoreMembers) { + public Long zadd(final byte[] key, final Map scoreMembers) { checkIsInMulti(); client.zaddBinary(key, scoreMembers); return client.getIntegerReply(); diff --git a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java index aed3011..3e44f9c 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java +++ b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import redis.clients.jedis.BinaryClient.LIST_POSITION; + /** * Common interface for sharded and non-sharded BinaryJedis */ @@ -114,8 +116,8 @@ public interface BinaryJedisCommands { Long strlen(byte[] key); Long zadd(byte[] key, double score, byte[] member); - - Long zadd(byte[] key, Map scoreMembers); + + Long zadd(byte[] key, Map scoreMembers); Set zrange(byte[] key, long start, long end); @@ -157,45 +159,45 @@ public interface BinaryJedisCommands { Set zrevrangeByScore(byte[] key, byte[] max, byte[] min); Set zrangeByScore(byte[] key, byte[] min, byte[] max, int offset, - int count); + int count); Set zrevrangeByScore(byte[] key, double max, double min, - int offset, int count); + int offset, int count); Set zrangeByScoreWithScores(byte[] key, double min, double max); Set zrevrangeByScoreWithScores(byte[] key, double max, double min); Set zrangeByScoreWithScores(byte[] key, double min, double max, - int offset, int count); - + int offset, int count); + Set zrevrangeByScore(byte[] key, byte[] max, byte[] min, - int offset, int count); + int offset, int count); Set zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max); - + Set zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min); Set zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, - int offset, int count); + int offset, int count); Set zrevrangeByScoreWithScores(byte[] key, double max, double min, - int offset, int count); - + int offset, int count); + Set zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min, - int offset, int count); + int offset, int count); Long zremrangeByRank(byte[] key, long start, long end); Long zremrangeByScore(byte[] key, double start, double end); - + Long zremrangeByScore(byte[] key, byte[] start, byte[] end); Long linsert(byte[] key, Client.LIST_POSITION where, byte[] pivot, - byte[] value); - + byte[] value); + Long lpushx(byte[] key, byte[]... arg); - + Long rpushx(byte[] key, byte[]... arg); List blpop(byte[] arg); diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index da934a4..382d48b 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -295,7 +295,7 @@ public class BinaryShardedJedis extends Sharded return j.zadd(key, score, member); } - public Long zadd(byte[] key, Map scoreMembers) { + public Long zadd(byte[] key, Map scoreMembers) { Jedis j = getShard(key); return j.zadd(key, scoreMembers); } diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index 1353a1b..a2ec464 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -709,17 +709,19 @@ public class Client extends BinaryClient implements Commands { public void scriptLoad(String script) { scriptLoad(SafeEncoder.encode(script)); } + + public void zadd(String key, Map scoreMembers) { + + HashMap binaryScoreMembers = new HashMap(); - public void zadd(String key, Map scoreMembers) { - HashMap binaryScoreMembers = new HashMap(); - - for (Map.Entry entry : scoreMembers.entrySet()) { - binaryScoreMembers.put(entry.getKey(), - SafeEncoder.encode(entry.getValue())); + for (Map.Entry entry : scoreMembers.entrySet()) { + + binaryScoreMembers.put(SafeEncoder.encode(entry.getKey()), entry.getValue()); + } + + zaddBinary(SafeEncoder.encode(key), binaryScoreMembers); } - zaddBinary(SafeEncoder.encode(key), binaryScoreMembers); - } public void objectRefcount(String key) { objectRefcount(SafeEncoder.encode(key)); diff --git a/src/main/java/redis/clients/jedis/Commands.java b/src/main/java/redis/clients/jedis/Commands.java index e4e22ec..c6b26f7 100644 --- a/src/main/java/redis/clients/jedis/Commands.java +++ b/src/main/java/redis/clients/jedis/Commands.java @@ -143,8 +143,8 @@ public interface Commands { public void srandmember(final String key); public void zadd(final String key, final double score, final String member); - - public void zadd(final String key, final Map scoreMembers); + + public void zadd(final String key, final Map scoreMembers); public void zrange(final String key, final long start, final long end); diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 2503d50..cdc3918 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -1415,10 +1415,10 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return client.getIntegerReply(); } - public Long zadd(final String key, final Map scoreMembers) { - checkIsInMulti(); - client.zadd(key, scoreMembers); - return client.getIntegerReply(); + public Long zadd(final String key, final Map scoreMembers) { + checkIsInMulti(); + client.zadd(key, scoreMembers); + return client.getIntegerReply(); } public Set zrange(final String key, final long start, final long end) { diff --git a/src/main/java/redis/clients/jedis/JedisCluster.java b/src/main/java/redis/clients/jedis/JedisCluster.java index ed60b5a..ffa1115 100644 --- a/src/main/java/redis/clients/jedis/JedisCluster.java +++ b/src/main/java/redis/clients/jedis/JedisCluster.java @@ -635,7 +635,7 @@ public class JedisCluster implements JedisCommands, BasicCommands { } @Override - public Long zadd(final String key, final Map scoreMembers) { + public Long zadd(final String key, final Map scoreMembers) { return new JedisClusterCommand(connectionHandler, timeout, maxRedirections) { @Override diff --git a/src/main/java/redis/clients/jedis/JedisCommands.java b/src/main/java/redis/clients/jedis/JedisCommands.java index d027361..4f9af0d 100644 --- a/src/main/java/redis/clients/jedis/JedisCommands.java +++ b/src/main/java/redis/clients/jedis/JedisCommands.java @@ -115,7 +115,7 @@ public interface Long zadd(String key, double score, String member); - Long zadd(String key, Map scoreMembers); + Long zadd(String key, Map scoreMembers); Set zrange(String key, long start, long end); diff --git a/src/main/java/redis/clients/jedis/PipelineBase.java b/src/main/java/redis/clients/jedis/PipelineBase.java index b89ea07..9ebcc9e 100644 --- a/src/main/java/redis/clients/jedis/PipelineBase.java +++ b/src/main/java/redis/clients/jedis/PipelineBase.java @@ -654,7 +654,7 @@ abstract class PipelineBase extends Queable implements return getResponse(BuilderFactory.LONG); } - public Response zadd(String key, Map scoreMembers) { + public Response zadd(String key, Map scoreMembers) { getClient(key).zadd(key, scoreMembers); return getResponse(BuilderFactory.LONG); } diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index a63a7d0..f3d2f72 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -326,10 +326,10 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { Jedis j = getShard(key); return j.zadd(key, score, member); } - - public Long zadd(String key, Map scoreMembers) { - Jedis j = getShard(key); - return j.zadd(key, scoreMembers); + + public Long zadd(String key, Map scoreMembers) { + Jedis j = getShard(key); + return j.zadd(key, scoreMembers); } public Set zrange(String key, long start, long end) { diff --git a/src/test/java/redis/clients/jedis/tests/commands/VariadicCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/VariadicCommandsTest.java index fd63859..5e84ec9 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/VariadicCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/VariadicCommandsTest.java @@ -117,30 +117,30 @@ public class VariadicCommandsTest extends JedisCommandTestBase { @Test public void zadd() { - Map scoreMembers = new HashMap(); - scoreMembers.put(1d, "bar"); - scoreMembers.put(10d, "foo"); + Map scoreMembers = new HashMap(); + scoreMembers.put("bar", 1d); + scoreMembers.put("foo", 10d); long status = jedis.zadd("foo", scoreMembers); assertEquals(2, status); scoreMembers.clear(); - scoreMembers.put(0.1d, "car"); - scoreMembers.put(2d, "bar"); + scoreMembers.put("car", 0.1d); + scoreMembers.put("bar", 2d); status = jedis.zadd("foo", scoreMembers); assertEquals(1, status); - Map bscoreMembers = new HashMap(); - bscoreMembers.put(1d, bbar); - bscoreMembers.put(10d, bfoo); + Map bscoreMembers = new HashMap(); + bscoreMembers.put(bbar, 1d); + bscoreMembers.put(bfoo, 10d); status = jedis.zadd(bfoo, bscoreMembers); assertEquals(2, status); bscoreMembers.clear(); - bscoreMembers.put(0.1d, bcar); - bscoreMembers.put(2d, bbar); + bscoreMembers.put(bcar, 0.1d); + bscoreMembers.put(bbar, 2d); status = jedis.zadd(bfoo, bscoreMembers); assertEquals(1, status);