From 4570329924d3d47626e05f8bf41337064519c668 Mon Sep 17 00:00:00 2001 From: MURAOKA Taro Date: Thu, 23 Aug 2012 10:29:36 +0900 Subject: [PATCH 01/23] implemented bitcount and bitop commands for Redis 2.6 --- .gitignore | 1 + .../redis/clients/jedis/BinaryClient.java | 37 +++++++++++ src/main/java/redis/clients/jedis/BitOP.java | 8 +++ src/main/java/redis/clients/jedis/Client.java | 12 ++++ .../java/redis/clients/jedis/Commands.java | 8 ++- src/main/java/redis/clients/jedis/Jedis.java | 16 +++++ .../redis/clients/jedis/JedisCommands.java | 7 +++ .../java/redis/clients/jedis/Protocol.java | 4 +- .../redis/clients/jedis/ShardedJedis.java | 15 +++++ .../jedis/tests/commands/BitCommandsTest.java | 63 ++++++++++++++++++- 10 files changed, 167 insertions(+), 4 deletions(-) create mode 100644 src/main/java/redis/clients/jedis/BitOP.java diff --git a/.gitignore b/.gitignore index d77754e..982e6b6 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ target/ build/ bin/ +tags diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index a5323d2..91f75b3 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -807,4 +807,41 @@ public class BinaryClient extends Connection { public void objectEncoding(byte[] key) { sendCommand(OBJECT, ENCODING.raw, key); } + + public void bitcount(byte[] key) { + sendCommand(BITCOUNT, key); + } + + public void bitcount(byte[] key, long start, long end) { + sendCommand(BITCOUNT, key, toByteArray(start), toByteArray(end)); + } + + public void bitop(BitOP op, byte[] destKey, String... srcKeys) { + Keyword kw = Keyword.AND; + int len = srcKeys.length; + switch (op) { + case AND: + kw = Keyword.AND; + break; + case OR: + kw = Keyword.OR; + break; + case XOR: + kw = Keyword.XOR; + break; + case NOT: + kw = Keyword.NOT; + len = Math.min(1, len); + break; + } + + byte[][] bargs = new byte[len + 2][]; + bargs[0] = kw.raw; + bargs[1] = destKey; + for (int i = 0; i < len; ++i) { + bargs[i + 2] = SafeEncoder.encode(srcKeys[i]); + } + + sendCommand(BITOP, bargs); + } } diff --git a/src/main/java/redis/clients/jedis/BitOP.java b/src/main/java/redis/clients/jedis/BitOP.java new file mode 100644 index 0000000..5e3ee89 --- /dev/null +++ b/src/main/java/redis/clients/jedis/BitOP.java @@ -0,0 +1,8 @@ +package redis.clients.jedis; + +public enum BitOP { + AND, + OR, + XOR, + NOT; +} diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index 39aae12..648d3ed 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -703,4 +703,16 @@ public class Client extends BinaryClient implements Commands { public void objectEncoding(String key) { objectEncoding(SafeEncoder.encode(key)); } + + public void bitcount(final String key) { + bitcount(SafeEncoder.encode(key)); + } + + public void bitcount(final String key, long start, long end) { + bitcount(SafeEncoder.encode(key), start, end); + } + + public void bitop(BitOP op, final String destKey, String... srcKeys) { + bitop(op, SafeEncoder.encode(destKey), srcKeys); + } } diff --git a/src/main/java/redis/clients/jedis/Commands.java b/src/main/java/redis/clients/jedis/Commands.java index 7881909..6227492 100644 --- a/src/main/java/redis/clients/jedis/Commands.java +++ b/src/main/java/redis/clients/jedis/Commands.java @@ -285,4 +285,10 @@ public interface Commands { public void objectIdletime(String key); public void objectEncoding(String key); -} \ No newline at end of file + + public void bitcount(final String key); + + public void bitcount(final String key, long start, long end); + + public void bitop(BitOP op, final String destKey, String... srcKeys); +} diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index f27c2bc..1f1ca8c 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2873,4 +2873,20 @@ public class Jedis extends BinaryJedis implements JedisCommands { client.objectIdletime(string); return client.getIntegerReply(); } + + public Long bitcount(final String key) { + client.bitcount(key); + return client.getIntegerReply(); + } + + public Long bitcount(final String key, long start, long end) { + client.bitcount(key, start, end); + return client.getIntegerReply(); + } + + public Long bitop(BitOP op, final String destKey, String... srcKeys) { + client.bitop(op, destKey, srcKeys); + return client.getIntegerReply(); + } + } diff --git a/src/main/java/redis/clients/jedis/JedisCommands.java b/src/main/java/redis/clients/jedis/JedisCommands.java index d4c07f3..ee87aa2 100644 --- a/src/main/java/redis/clients/jedis/JedisCommands.java +++ b/src/main/java/redis/clients/jedis/JedisCommands.java @@ -190,4 +190,11 @@ public interface JedisCommands { Long lpushx(String key, String string); Long rpushx(String key, String string); + + Long bitcount(final String key); + + Long bitcount(final String key, long start, long end); + + Long bitop(BitOP op, final String destKey, String... srcKeys); + } diff --git a/src/main/java/redis/clients/jedis/Protocol.java b/src/main/java/redis/clients/jedis/Protocol.java index b1e391d..9c8f381 100644 --- a/src/main/java/redis/clients/jedis/Protocol.java +++ b/src/main/java/redis/clients/jedis/Protocol.java @@ -144,7 +144,7 @@ public final class Protocol { } public static enum Command { - PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, 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, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH, SETBIT, GETBIT, SETRANGE, GETRANGE, EVAL, EVALSHA, SCRIPT, SLOWLOG, OBJECT; + PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, 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, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH, SETBIT, GETBIT, SETRANGE, GETRANGE, EVAL, EVALSHA, SCRIPT, SLOWLOG, OBJECT, BITCOUNT, BITOP; public final byte[] raw; @@ -154,7 +154,7 @@ public final class Protocol { } public static enum Keyword { - AGGREGATE, ALPHA, ASC, BY, DESC, GET, LIMIT, MESSAGE, NO, NOSORT, PMESSAGE, PSUBSCRIBE, PUNSUBSCRIBE, OK, ONE, QUEUED, SET, STORE, SUBSCRIBE, UNSUBSCRIBE, WEIGHTS, WITHSCORES, RESETSTAT, RESET, FLUSH, EXISTS, LOAD, KILL, LEN, REFCOUNT, ENCODING, IDLETIME; + AGGREGATE, ALPHA, ASC, BY, DESC, GET, LIMIT, MESSAGE, NO, NOSORT, PMESSAGE, PSUBSCRIBE, PUNSUBSCRIBE, OK, ONE, QUEUED, SET, STORE, SUBSCRIBE, UNSUBSCRIBE, WEIGHTS, WITHSCORES, RESETSTAT, RESET, FLUSH, EXISTS, LOAD, KILL, LEN, REFCOUNT, ENCODING, IDLETIME, AND, OR, XOR, NOT; public final byte[] raw; Keyword() { diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index ea2f11e..f4f5341 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -483,4 +483,19 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { Jedis j = getShard(key); return j.linsert(key, where, pivot, value); } + + public Long bitcount(final String key) { + Jedis j = getShard(key); + return j.bitcount(key); + } + + public Long bitcount(final String key, long start, long end) { + Jedis j = getShard(key); + return j.bitcount(key, start, end); + } + + public Long bitop(BitOP op, final String destKey, String... srcKeys) { + Jedis j = getShard(destKey); + return j.bitop(op, destKey, srcKeys); + } } diff --git a/src/test/java/redis/clients/jedis/tests/commands/BitCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/BitCommandsTest.java index 047ca20..87b044f 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/BitCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/BitCommandsTest.java @@ -2,6 +2,8 @@ package redis.clients.jedis.tests.commands; import org.junit.Test; +import redis.clients.jedis.BitOP; + public class BitCommandsTest extends JedisCommandTestBase { @Test public void setAndgetbit() { @@ -29,4 +31,63 @@ public class BitCommandsTest extends JedisCommandTestBase { assertEquals("Hello", jedis.getrange("key1", 0, 4)); assertEquals("Jedis", jedis.getrange("key1", 6, 11)); } -} \ No newline at end of file + + @Test + public void bitCount() { + jedis.del("foo"); + + jedis.setbit("foo", 16, true); + jedis.setbit("foo", 24, true); + jedis.setbit("foo", 40, true); + jedis.setbit("foo", 56, true); + + long c4 = jedis.bitcount("foo"); + assertEquals(4, c4); + + long c3 = jedis.bitcount("foo", 2L, 5L); + assertEquals(3, c3); + + jedis.del("foo"); + } + + @Test + public void bitOp() + { + jedis.set("key1", "\u0060"); + jedis.set("key2", "\u0044"); + + jedis.bitop(BitOP.AND, "resultAnd", "key1", "key2"); + String resultAnd = jedis.get("resultAnd"); + assertEquals("\u0040", resultAnd); + + jedis.bitop(BitOP.OR, "resultOr", "key1", "key2"); + String resultOr = jedis.get("resultOr"); + assertEquals("\u0064", resultOr); + + jedis.bitop(BitOP.XOR, "resultXor", "key1", "key2"); + String resultXor = jedis.get("resultXor"); + assertEquals("\u0024", resultXor); + + jedis.del("resultAnd"); + jedis.del("resultOr"); + jedis.del("resultXor"); + jedis.del("key1"); + jedis.del("key2"); + } + + @Test + public void bitOpNot() + { + jedis.del("key"); + jedis.setbit("key", 0, true); + jedis.setbit("key", 4, true); + + jedis.bitop(BitOP.NOT, "resultNot", "key"); + + String resultNot = jedis.get("resultNot"); + assertEquals("\u0077", resultNot); + + jedis.del("key"); + jedis.del("resultNot"); + } +} From 69b5291f80762e737e2d30a5b3b87dbff1d81056 Mon Sep 17 00:00:00 2001 From: Maciej Lopacinski Date: Sun, 18 Nov 2012 19:58:13 +0100 Subject: [PATCH 02/23] SENTINEL commands --- .../redis/clients/jedis/BinaryClient.java | 5 + src/main/java/redis/clients/jedis/Client.java | 14 ++ src/main/java/redis/clients/jedis/Jedis.java | 139 ++++++++++++++++++ .../java/redis/clients/jedis/Protocol.java | 8 +- .../jedis/tests/JedisSentinelTest.java | 47 ++++++ 5 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index a5323d2..8f29407 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -807,4 +807,9 @@ public class BinaryClient extends Connection { public void objectEncoding(byte[] key) { sendCommand(OBJECT, ENCODING.raw, key); } + + public void sentinel(final byte[]... args) { + sendCommand(SENTINEL, args); + } + } diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index 39aae12..bfabe2d 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -703,4 +703,18 @@ public class Client extends BinaryClient implements Commands { public void objectEncoding(String key) { objectEncoding(SafeEncoder.encode(key)); } + + + public void sentinel(final String... args) { + final byte[][] arg = new byte[args.length][]; + for (int i = 0; i < arg.length; i++) { + arg[i] = SafeEncoder.encode(args[i]); + } + sentinel(arg); + } + + public void sentinel(final String cmd, String arg1, int arg2) { + sentinel(SafeEncoder.encode(cmd), SafeEncoder.encode(arg1), toByteArray(arg2)); + } + } diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index f27c2bc..58925ea 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2,6 +2,7 @@ package redis.clients.jedis; import java.net.URI; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; @@ -2873,4 +2874,142 @@ public class Jedis extends BinaryJedis implements JedisCommands { client.objectIdletime(string); return client.getIntegerReply(); } + + /** + *
+   * redis 127.0.0.1:26381> sentinel masters
+   * 1)  1) "name"
+   *     2) "mymaster"
+   *     3) "ip"
+   *     4) "127.0.0.1"
+   *     5) "port"
+   *     6) "6379"
+   *     7) "runid"
+   *     8) "93d4d4e6e9c06d0eea36e27f31924ac26576081d"
+   *     9) "flags"
+   *    10) "master"
+   *    11) "pending-commands"
+   *    12) "0"
+   *    13) "last-ok-ping-reply"
+   *    14) "423"
+   *    15) "last-ping-reply"
+   *    16) "423"
+   *    17) "info-refresh"
+   *    18) "6107"
+   *    19) "num-slaves"
+   *    20) "1"
+   *    21) "num-other-sentinels"
+   *    22) "2"
+   *    23) "quorum"
+   *    24) "2"
+   *
+   * 
+ * + * @return + */ + public List> sentinelMasters() { + client.sentinel(Protocol.SENTINEL_MASTERS); + final List reply = client.getObjectMultiBulkReply(); + + final List> masters = new ArrayList>(); + for (Object obj : reply) { + masters.add(BuilderFactory.STRING_MAP.build((List) obj)); + } + return masters; + } + + + /** + *
+   * redis 127.0.0.1:26381> sentinel get-master-addr-by-name mymaster
+   * 1) "127.0.0.1"
+   * 2) "6379"
+   * 
+ * + * @param masterName + * @return two elements list of strings : host and port. + */ + public List sentinelGetMasterAddrByName(String masterName) { + client.sentinel(Protocol.SENTINEL_GET_MASTER_ADDR_BY_NAME, masterName); + final List reply = client.getObjectMultiBulkReply(); + return BuilderFactory.STRING_LIST.build(reply); + } + + /** + *
+   * redis 127.0.0.1:26381> sentinel reset mymaster
+   * (integer) 1
+   * 
+ * + * @param pattern + * @return + */ + public Long sentinelReset(String pattern) { + client.sentinel(Protocol.SENTINEL_RESET, pattern); + return client.getIntegerReply(); + } + + /** + *
+   * redis 127.0.0.1:26381> sentinel slaves mymaster
+   * 1)  1) "name"
+   *     2) "127.0.0.1:6380"
+   *     3) "ip"
+   *     4) "127.0.0.1"
+   *     5) "port"
+   *     6) "6380"
+   *     7) "runid"
+   *     8) "d7f6c0ca7572df9d2f33713df0dbf8c72da7c039"
+   *     9) "flags"
+   *    10) "slave"
+   *    11) "pending-commands"
+   *    12) "0"
+   *    13) "last-ok-ping-reply"
+   *    14) "47"
+   *    15) "last-ping-reply"
+   *    16) "47"
+   *    17) "info-refresh"
+   *    18) "657"
+   *    19) "master-link-down-time"
+   *    20) "0"
+   *    21) "master-link-status"
+   *    22) "ok"
+   *    23) "master-host"
+   *    24) "localhost"
+   *    25) "master-port"
+   *    26) "6379"
+   *    27) "slave-priority"
+   *    28) "100"
+   * 
+ * + * @param masterName + * @return + */ + public List> sentinelSlaves(String masterName) { + client.sentinel(Protocol.SENTINEL_SLAVES, masterName); + final List reply = client.getObjectMultiBulkReply(); + + final List> slaves = new ArrayList>(); + for (Object obj : reply) { + slaves.add(BuilderFactory.STRING_MAP.build((List) obj)); + } + return slaves; + } + + /** + *
+   * redis 127.0.0.1:26381> SENTINEL is-master-down-by-addr 127.0.0.1 1
+   * 1) (integer) 0
+   * 2) "?"
+   * redis 127.0.0.1:26381> SENTINEL is-master-down-by-addr 127.0.0.1 6379
+   * 1) (integer) 0
+   * 2) "aaef11fbb2712346a386078c7f9834e72ed51e96"
+   * 
+ * @return Long followed by the String (runid) + */ + public List sentinelIsMasterDownByAddr(String host, int port) { + client.sentinel(Protocol.SENTINEL_IS_MASTER_DOWN_BY_ADDR, host, port); + final List reply = client.getObjectMultiBulkReply(); + return Arrays.asList(BuilderFactory.LONG.build(reply.get(0)), BuilderFactory.STRING.build(reply.get(1))); + } } diff --git a/src/main/java/redis/clients/jedis/Protocol.java b/src/main/java/redis/clients/jedis/Protocol.java index b1e391d..6e1d364 100644 --- a/src/main/java/redis/clients/jedis/Protocol.java +++ b/src/main/java/redis/clients/jedis/Protocol.java @@ -24,6 +24,12 @@ public final class Protocol { public static final byte MINUS_BYTE = '-'; public static final byte COLON_BYTE = ':'; + public static final String SENTINEL_MASTERS = "masters"; + public static final String SENTINEL_GET_MASTER_ADDR_BY_NAME = "get-master-addr-by-name"; + public static final String SENTINEL_RESET = "reset"; + public static final String SENTINEL_SLAVES = "slaves"; + public static final String SENTINEL_IS_MASTER_DOWN_BY_ADDR = "is-master-down-by-addr"; + private Protocol() { // this prevent the class from instantiation } @@ -144,7 +150,7 @@ public final class Protocol { } public static enum Command { - PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, 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, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH, SETBIT, GETBIT, SETRANGE, GETRANGE, EVAL, EVALSHA, SCRIPT, SLOWLOG, OBJECT; + PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, 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, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH, SETBIT, GETBIT, SETRANGE, GETRANGE, EVAL, EVALSHA, SCRIPT, SLOWLOG, OBJECT, SENTINEL; public final byte[] raw; diff --git a/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java b/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java new file mode 100644 index 0000000..6ca62b9 --- /dev/null +++ b/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java @@ -0,0 +1,47 @@ +package redis.clients.jedis.tests; + +import static junit.framework.Assert.*; + +import java.util.List; +import java.util.Map; + +import org.junit.Test; + +import redis.clients.jedis.Jedis; + +public class JedisSentinelTest { + + private static final String MASTER_NAME = "mymaster"; + + /** + * Based on redis/master/slave/sentinel configs from + * https://github.com/noise/redis-sentinel-tests. + */ + @Test + public void sentinel() { + Jedis j = new Jedis("localhost", 26379); + List> masters = j.sentinelMasters(); + final String masterName = masters.get(0).get("name"); + + assertEquals(MASTER_NAME, masterName); + + List masterHostAndPort = j.sentinelGetMasterAddrByName(masterName); + assertEquals("127.0.0.1", masterHostAndPort.get(0)); + assertEquals("6379", masterHostAndPort.get(1)); + + List> slaves = j.sentinelSlaves(masterName); + assertEquals("6379", slaves.get(0).get("master-port")); + + List isMasterDownByAddr = j.sentinelIsMasterDownByAddr("127.0.0.1", 6379); + assertEquals(Long.valueOf(0), (Long) isMasterDownByAddr.get(0)); + assertFalse("?".equals(isMasterDownByAddr.get(1))); + + isMasterDownByAddr = j.sentinelIsMasterDownByAddr("127.0.0.1", 1); + assertEquals(Long.valueOf(0), (Long) isMasterDownByAddr.get(0)); + assertTrue("?".equals(isMasterDownByAddr.get(1))); + + // DO NOT RE-RUN TEST TOO FAST, RESET TAKES SOME TIME TO... RESET + assertEquals(Long.valueOf(1), j.sentinelReset(masterName)); + assertEquals(Long.valueOf(0), j.sentinelReset("woof" + masterName)); + } +} From 0340fddb3ae750c9deb119c7450618609fa0536a Mon Sep 17 00:00:00 2001 From: guycoleman Date: Mon, 3 Dec 2012 15:36:30 +0000 Subject: [PATCH 03/23] Add persist to ShardedJedis --- .../redis/clients/jedis/BinaryShardedJedis.java | 14 +++++++++----- .../java/redis/clients/jedis/ShardedJedis.java | 11 ++++++++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index 23fd6d6..a6bed45 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -1,5 +1,9 @@ package redis.clients.jedis; +import redis.clients.jedis.BinaryClient.LIST_POSITION; +import redis.clients.util.Hashing; +import redis.clients.util.Sharded; + import java.io.IOException; import java.util.Collection; import java.util.List; @@ -7,10 +11,6 @@ import java.util.Map; import java.util.Set; import java.util.regex.Pattern; -import redis.clients.jedis.BinaryClient.LIST_POSITION; -import redis.clients.util.Hashing; -import redis.clients.util.Sharded; - public class BinaryShardedJedis extends Sharded implements BinaryJedisCommands { public BinaryShardedJedis(List shards) { @@ -199,7 +199,11 @@ public class BinaryShardedJedis extends Sharded Jedis j = getShard(key); return j.lpushx(key, string); } - + + public Long persist(final byte[] key) { + Jedis j = getShard(key); + return j.persist(key); + } public Long rpushx(byte[] key, byte[] string) { Jedis j = getShard(key); diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index ea2f11e..dc82999 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -1,13 +1,13 @@ package redis.clients.jedis; +import redis.clients.jedis.BinaryClient.LIST_POSITION; +import redis.clients.util.Hashing; + import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; -import redis.clients.jedis.BinaryClient.LIST_POSITION; -import redis.clients.util.Hashing; - public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { public ShardedJedis(List shards) { super(shards); @@ -218,6 +218,11 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { return j.rpushx(key, string); } + public Long persist(final String key) { + Jedis j = getShard(key); + return j.persist(key); + } + public Long llen(String key) { Jedis j = getShard(key); return j.llen(key); From 6bede66493b49f27d21284f9f823b086e3683f10 Mon Sep 17 00:00:00 2001 From: guycoleman Date: Mon, 3 Dec 2012 15:42:15 +0000 Subject: [PATCH 04/23] Add strlen to ShardedJedis --- src/main/java/redis/clients/jedis/BinaryShardedJedis.java | 5 +++++ src/main/java/redis/clients/jedis/ShardedJedis.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index a6bed45..54b0103 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -195,6 +195,11 @@ public class BinaryShardedJedis extends Sharded return j.lpush(key, strings); } + public Long strlen(final byte[] key) { + Jedis j = getShard(key); + return j.strlen(key); + } + public Long lpushx(byte[] key, byte[] string) { Jedis j = getShard(key); return j.lpushx(key, string); diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index dc82999..b14adac 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -213,6 +213,11 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { return j.lpushx(key, string); } + public Long strlen(final String key) { + Jedis j = getShard(key); + return j.strlen(key); + } + public Long rpushx(String key, String string) { Jedis j = getShard(key); return j.rpushx(key, string); From 7e95b1500f3b6d1a9e6ba45a5bf037bdd1f2704a Mon Sep 17 00:00:00 2001 From: guycoleman Date: Mon, 3 Dec 2012 15:47:25 +0000 Subject: [PATCH 05/23] Add getbit,setbit, getrange, setrange to BinaryShardedJedis --- .../clients/jedis/BinaryShardedJedis.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index 54b0103..68adb8d 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -498,4 +498,24 @@ public class BinaryShardedJedis extends Sharded Jedis j = getShard(key); return j.objectIdletime(key); } + + public Boolean setbit(byte[] key, long offset, byte[] value) { + Jedis j = getShard(key); + return j.setbit(key, offset, value); + } + + public Boolean getbit(byte[] key, long offset) { + Jedis j = getShard(key); + return j.getbit(key, offset); + } + + public Long setrange(byte[] key, long offset, byte[] value) { + Jedis j = getShard(key); + return j.setrange(key, offset, value); + } + + public String getrange(byte[] key, long startOffset, long endOffset) { + Jedis j = getShard(key); + return j.getrange(key, startOffset, endOffset); + } } \ No newline at end of file From bf9bba6ef221d5e9cb73232ac75576e18710becd Mon Sep 17 00:00:00 2001 From: guycoleman Date: Tue, 4 Dec 2012 17:21:43 +0000 Subject: [PATCH 06/23] Extract string and binary common interfaces for Pipline and ShardedJedisPipeline. While I'm here add missing binary methods for some bit operations and fix return types for some sharded operations (e.g. getType) --- .../clients/jedis/BinaryRedisPipeline.java | 205 +++++ .../java/redis/clients/jedis/Pipeline.java | 92 ++- .../redis/clients/jedis/RedisPipeline.java | 184 +++++ .../clients/jedis/ShardedJedisPipeline.java | 725 +++++++++++++++++- 4 files changed, 1153 insertions(+), 53 deletions(-) create mode 100644 src/main/java/redis/clients/jedis/BinaryRedisPipeline.java create mode 100644 src/main/java/redis/clients/jedis/RedisPipeline.java diff --git a/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java new file mode 100644 index 0000000..24b6089 --- /dev/null +++ b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java @@ -0,0 +1,205 @@ +package redis.clients.jedis; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @author guy + */ +public interface BinaryRedisPipeline { + Response append(byte[] key, byte[] value); + + Response decr(byte[] key); + + Response decrBy(byte[] key, long integer); + + Response exists(byte[] key); + + Response expire(byte[] key, int seconds); + + Response expireAt(byte[] key, long unixTime); + + Response get(byte[] key); + + Response getbit(byte[] key, long offset); + + Response getSet(byte[] key, byte[] value); + + Response getrange(byte[] key, long startOffset, long endOffset); + + Response hdel(byte[] key, byte[] field); + + Response hexists(byte[] key, byte[] field); + + Response hget(byte[] key, byte[] field); + + Response> hgetAll(byte[] key); + + Response hincrBy(byte[] key, byte[] field, long value); + + Response> hkeys(byte[] key); + + Response hlen(byte[] key); + + Response> hmget(byte[] key, byte[]... fields); + + Response hmset(byte[] key, Map hash); + + Response hset(byte[] key, byte[] field, byte[] value); + + Response hsetnx(byte[] key, byte[] field, byte[] value); + + Response> hvals(byte[] key); + + Response incr(byte[] key); + + Response incrBy(byte[] key, long integer); + + Response lindex(byte[] key, int index); + + Response linsert(byte[] key, BinaryClient.LIST_POSITION where, + byte[] pivot, byte[] value); + + Response llen(byte[] key); + + Response lpop(byte[] key); + + Response lpush(byte[] key, byte[] string); + + Response lpushx(byte[] key, byte[] bytes); + + Response> lrange(byte[] key, long start, long end); + + Response lrem(byte[] key, long count, byte[] value); + + Response lset(byte[] key, long index, byte[] value); + + Response ltrim(byte[] key, long start, long end); + + Response persist(byte[] key); + + Response rpop(byte[] key); + + Response rpush(byte[] key, byte[] string); + + Response rpushx(byte[] key, byte[] string); + + Response sadd(byte[] key, byte[] member); + + Response scard(byte[] key); + + Response set(byte[] key, byte[] value); + + Response setbit(byte[] key, long offset, byte[] value); + + Response setrange(byte[] key, long offset, byte[] value); + + Response setex(byte[] key, int seconds, byte[] value); + + Response setnx(byte[] key, byte[] value); + + Response setrange(String key, long offset, String value); + + Response> smembers(byte[] key); + + Response sismember(byte[] key, byte[] member); + + Response sort(byte[] key); + + Response> sort(byte[] key, + SortingParams sortingParameters); + + Response spop(byte[] key); + + Response srandmember(byte[] key); + + Response srem(byte[] key, byte[] member); + + Response strlen(byte[] key); + + Response substr(byte[] key, int start, int end); + + Response ttl(byte[] key); + + Response type(byte[] key); + + Response zadd(byte[] key, double score, byte[] member); + + Response zcard(byte[] key); + + Response zcount(byte[] key, double min, double max); + + Response zincrby(byte[] key, double score, byte[] member); + + Response> zrange(byte[] key, int start, int end); + + Response> zrangeByScore(byte[] key, double min, + double max); + + Response> zrangeByScore(byte[] key, byte[] min, + byte[] max); + + Response> zrangeByScore(byte[] key, double min, + double max, int offset, int count); + + Response> zrangeByScore(byte[] key, byte[] min, + byte[] max, int offset, int count); + + Response> zrangeByScoreWithScores(byte[] key, double min, + double max); + + Response> zrangeByScoreWithScores(byte[] key, byte[] min, + byte[] max); + + Response> zrangeByScoreWithScores(byte[] key, double min, + double max, int offset, int count); + + Response> zrangeByScoreWithScores(byte[] key, byte[] min, + byte[] max, int offset, int count); + + Response> zrevrangeByScore(byte[] key, double max, + double min); + + Response> zrevrangeByScore(byte[] key, byte[] max, + byte[] min); + + Response> zrevrangeByScore(byte[] key, double max, + double min, int offset, int count); + + Response> zrevrangeByScore(byte[] key, byte[] max, + byte[] min, int offset, int count); + + Response> zrevrangeByScoreWithScores(byte[] key, + double max, double min); + + Response> zrevrangeByScoreWithScores(byte[] key, + byte[] max, byte[] min); + + Response> zrevrangeByScoreWithScores(byte[] key, + double max, double min, int offset, int count); + + Response> zrevrangeByScoreWithScores(byte[] key, + byte[] max, byte[] min, int offset, int count); + + Response> zrangeWithScores(byte[] key, int start, int end); + + Response zrank(byte[] key, byte[] member); + + Response zrem(byte[] key, byte[] member); + + Response zremrangeByRank(byte[] key, int start, int end); + + Response zremrangeByScore(byte[] key, double start, double end); + + Response zremrangeByScore(byte[] key, byte[] start, byte[] end); + + Response> zrevrange(byte[] key, int start, int end); + + Response> zrevrangeWithScores(byte[] key, int start, + int end); + + Response zrevrank(byte[] key, byte[] member); + + Response zscore(byte[] key, byte[] member); +} diff --git a/src/main/java/redis/clients/jedis/Pipeline.java b/src/main/java/redis/clients/jedis/Pipeline.java index d89efea..a85fceb 100644 --- a/src/main/java/redis/clients/jedis/Pipeline.java +++ b/src/main/java/redis/clients/jedis/Pipeline.java @@ -9,7 +9,7 @@ import java.util.Set; import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.jedis.exceptions.JedisDataException; -public class Pipeline extends Queable { +public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipeline { private MultiResponseBuilder currentMulti; @@ -209,8 +209,13 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.BOOLEAN); } + public Response getbit(byte[] key, long offset) { + client.getbit(key, offset); + return getResponse(BuilderFactory.BOOLEAN); + } + public Response getrange(String key, long startOffset, - long endOffset) { + long endOffset) { client.getrange(key, startOffset, endOffset); return getResponse(BuilderFactory.STRING); } @@ -225,6 +230,11 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.BYTE_ARRAY); } + public Response getrange(byte[] key, long startOffset, long endOffset) { + client.getrange(key, startOffset, endOffset); + return getResponse(BuilderFactory.LONG); + } + public Response hdel(String key, String field) { client.hdel(key, field); return getResponse(BuilderFactory.LONG); @@ -386,13 +396,13 @@ public class Pipeline extends Queable { } public Response linsert(String key, LIST_POSITION where, - String pivot, String value) { + String pivot, String value) { client.linsert(key, where, pivot, value); return getResponse(BuilderFactory.LONG); } public Response linsert(byte[] key, LIST_POSITION where, - byte[] pivot, byte[] value) { + byte[] pivot, byte[] value) { client.linsert(key, where, pivot, value); return getResponse(BuilderFactory.LONG); } @@ -642,6 +652,11 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.BOOLEAN); } + public Response setbit(byte[] key, long offset, byte[] value) { + client.setbit(key, offset, value); + return getResponse(BuilderFactory.BOOLEAN); + } + public Response setex(String key, int seconds, String value) { client.setex(key, seconds, value); return getResponse(BuilderFactory.STRING); @@ -667,6 +682,11 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response setrange(byte[] key, long offset, byte[] value) { + client.setrange(key, offset, value); + return getResponse(BuilderFactory.LONG); + } + public Response> sinter(String... keys) { client.sinter(keys); return getResponse(BuilderFactory.STRING_SET); @@ -728,25 +748,25 @@ public class Pipeline extends Queable { } public Response> sort(String key, - SortingParams sortingParameters) { + SortingParams sortingParameters) { client.sort(key, sortingParameters); return getResponse(BuilderFactory.STRING_LIST); } public Response> sort(byte[] key, - SortingParams sortingParameters) { + SortingParams sortingParameters) { client.sort(key, sortingParameters); return getResponse(BuilderFactory.STRING_LIST); } public Response> sort(String key, - SortingParams sortingParameters, String dstkey) { + SortingParams sortingParameters, String dstkey) { client.sort(key, sortingParameters, dstkey); return getResponse(BuilderFactory.STRING_LIST); } public Response> sort(byte[] key, - SortingParams sortingParameters, byte[] dstkey) { + SortingParams sortingParameters, byte[] dstkey) { client.sort(key, sortingParameters, dstkey); return getResponse(BuilderFactory.STRING_LIST); } @@ -934,154 +954,154 @@ public class Pipeline extends Queable { } public Response> zrangeByScore(String key, double min, - double max) { + double max) { client.zrangeByScore(key, min, max); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrangeByScore(byte[] key, double min, - double max) { + double max) { return zrangeByScore(key, toByteArray(min), toByteArray(max)); } public Response> zrangeByScore(String key, String min, - String max) { + String max) { client.zrangeByScore(key, min, max); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrangeByScore(byte[] key, byte[] min, - byte[] max) { + byte[] max) { client.zrangeByScore(key, min, max); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrangeByScore(String key, double min, - double max, int offset, int count) { + double max, int offset, int count) { client.zrangeByScore(key, min, max, offset, count); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrangeByScore(byte[] key, double min, - double max, int offset, int count) { + double max, int offset, int count) { return zrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); } public Response> zrangeByScore(byte[] key, byte[] min, - byte[] max, int offset, int count) { + byte[] max, int offset, int count) { client.zrangeByScore(key, min, max, offset, count); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrangeByScoreWithScores(String key, double min, - double max) { + double max) { client.zrangeByScoreWithScores(key, min, max); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrangeByScoreWithScores(byte[] key, double min, - double max) { + double max) { return zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max)); } public Response> zrangeByScoreWithScores(byte[] key, byte[] min, - byte[] max) { + byte[] max) { client.zrangeByScoreWithScores(key, min, max); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrangeByScoreWithScores(String key, double min, - double max, int offset, int count) { + double max, int offset, int count) { client.zrangeByScoreWithScores(key, min, max, offset, count); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrangeByScoreWithScores(byte[] key, double min, - double max, int offset, int count) { + double max, int offset, int count) { client.zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrangeByScoreWithScores(byte[] key, byte[] min, - byte[] max, int offset, int count) { + byte[] max, int offset, int count) { client.zrangeByScoreWithScores(key, min, max, offset, count); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeByScore(String key, double max, - double min) { + double min) { client.zrevrangeByScore(key, max, min); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScore(byte[] key, double max, - double min) { + double min) { client.zrevrangeByScore(key, toByteArray(max), toByteArray(min)); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScore(String key, String max, - String min) { + String min) { client.zrevrangeByScore(key, max, min); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScore(byte[] key, byte[] max, - byte[] min) { + byte[] min) { client.zrevrangeByScore(key, max, min); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScore(String key, double max, - double min, int offset, int count) { + double min, int offset, int count) { client.zrevrangeByScore(key, max, min, offset, count); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScore(byte[] key, double max, - double min, int offset, int count) { + double min, int offset, int count) { client.zrevrangeByScore(key, toByteArray(max), toByteArray(min), offset, count); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScore(byte[] key, byte[] max, - byte[] min, int offset, int count) { + byte[] min, int offset, int count) { client.zrevrangeByScore(key, max, min, offset, count); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScoreWithScores(String key, - double max, double min) { + double max, double min) { client.zrevrangeByScoreWithScores(key, max, min); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeByScoreWithScores(byte[] key, - double max, double min) { + double max, double min) { client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min)); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeByScoreWithScores(byte[] key, - byte[] max, byte[] min) { + byte[] max, byte[] min) { client.zrevrangeByScoreWithScores(key, max, min); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeByScoreWithScores(String key, - double max, double min, int offset, int count) { + double max, double min, int offset, int count) { client.zrevrangeByScoreWithScores(key, max, min, offset, count); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeByScoreWithScores(byte[] key, - double max, double min, int offset, int count) { + double max, double min, int offset, int count) { client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min), offset, count); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeByScoreWithScores(byte[] key, - byte[] max, byte[] min, int offset, int count) { + byte[] max, byte[] min, int offset, int count) { client.zrevrangeByScoreWithScores(key, max, min, offset, count); return getResponse(BuilderFactory.TUPLE_ZSET); } @@ -1152,13 +1172,13 @@ public class Pipeline extends Queable { } public Response> zrevrangeWithScores(String key, int start, - int end) { + int end) { client.zrevrangeWithScores(key, start, end); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeWithScores(byte[] key, int start, - int end) { + int end) { client.zrevrangeWithScores(key, start, end); return getResponse(BuilderFactory.TUPLE_ZSET); } diff --git a/src/main/java/redis/clients/jedis/RedisPipeline.java b/src/main/java/redis/clients/jedis/RedisPipeline.java new file mode 100644 index 0000000..ca3370e --- /dev/null +++ b/src/main/java/redis/clients/jedis/RedisPipeline.java @@ -0,0 +1,184 @@ +package redis.clients.jedis; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @author guy + */ +public interface RedisPipeline { + Response append(String key, String value); + + Response decr(String key); + + Response decrBy(String key, long integer); + + Response exists(String key); + + Response expire(String key, int seconds); + + Response expireAt(String key, long unixTime); + + Response get(String key); + + Response getbit(String key, long offset); + + + + Response getrange(String key, long startOffset, + long endOffset); + + Response getSet(String key, String value); + + Response hdel(String key, String field); + + Response hexists(String key, String field); + + Response hget(String key, String field); + + Response> hgetAll(String key); + + Response hincrBy(String key, String field, long value); + + Response> hkeys(String key); + + Response hlen(String key); + + Response> hmget(String key, String... fields); + + Response hmset(String key, Map hash); + + Response hset(String key, String field, String value); + + Response hsetnx(String key, String field, String value); + + Response> hvals(String key); + + Response incr(String key); + + Response incrBy(String key, long integer); + + Response lindex(String key, int index); + + Response linsert(String key, BinaryClient.LIST_POSITION where, + String pivot, String value); + + Response llen(String key); + + Response lpop(String key); + + Response lpush(String key, String string); + + Response lpushx(String key, String string); + + Response> lrange(String key, long start, long end); + + Response lrem(String key, long count, String value); + + Response lset(String key, long index, String value); + + Response ltrim(String key, long start, long end); + + Response persist(String key); + + Response rpop(String key); + + Response rpush(String key, String string); + + Response rpushx(String key, String string); + + Response sadd(String key, String member); + + Response scard(String key); + + Response sismember(String key, String member); + + Response set(String key, String value); + + Response setbit(String key, long offset, boolean value); + + Response setex(String key, int seconds, String value); + + Response setnx(String key, String value); + + Response> smembers(String key); + + Response sort(String key); + + Response> sort(String key, + SortingParams sortingParameters); + + Response spop(String key); + + Response srandmember(String key); + + Response srem(String key, String member); + + Response strlen(String key); + + Response substr(String key, int start, int end); + + Response ttl(String key); + + Response type(String key); + + Response zadd(String key, double score, String member); + + Response zcard(String key); + + Response zcount(String key, double min, double max); + + Response zincrby(String key, double score, String member); + + Response> zrange(String key, int start, int end); + + Response> zrangeByScore(String key, double min, + double max); + + Response> zrangeByScore(String key, String min, + String max); + + Response> zrangeByScore(String key, double min, + double max, int offset, int count); + + Response> zrangeByScoreWithScores(String key, double min, + double max); + + Response> zrangeByScoreWithScores(String key, double min, + double max, int offset, int count); + + Response> zrevrangeByScore(String key, double max, + double min); + + Response> zrevrangeByScore(String key, String max, + String min); + + Response> zrevrangeByScore(String key, double max, + double min, int offset, int count); + + Response> zrevrangeByScoreWithScores(String key, + double max, double min); + + Response> zrevrangeByScoreWithScores(String key, + double max, double min, int offset, int count); + + Response> zrangeWithScores(String key, int start, int end); + + Response zrank(String key, String member); + + Response zrem(String key, String member); + + Response zremrangeByRank(String key, int start, int end); + + Response zremrangeByScore(String key, double start, double end); + + Response> zrevrange(String key, int start, int end); + + Response> zrevrangeWithScores(String key, int start, + int end); + + Response zrevrank(String key, String member); + + Response zscore(String key, String member); +} diff --git a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java index af416c0..48371ac 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java +++ b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java @@ -4,7 +4,9 @@ import redis.clients.jedis.BinaryClient.LIST_POSITION; import java.util.*; -public class ShardedJedisPipeline extends Queable { +import static redis.clients.jedis.Protocol.toByteArray; + +public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline, RedisPipeline { private BinaryShardedJedis jedis; private List results = new ArrayList(); private Queue clients = new LinkedList(); @@ -32,6 +34,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response set(byte[] key, byte[] value) { + Client c = getClient(key); + c.set(key, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + public Response get(String key) { Client c = getClient(key); c.get(key); @@ -39,6 +48,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response get(byte[] key) { + Client c = getClient(key); + c.get(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + public Response del(String key) { Client c = getClient(key); c.del(key); @@ -53,13 +69,27 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.BOOLEAN); } - public Response type(String key) { + public Response exists(byte[] key) { Client c = getClient(key); - c.type(key); + c.exists(key); results.add(new FutureResult(c)); return getResponse(BuilderFactory.BOOLEAN); } + public Response type(String key) { + Client c = getClient(key); + c.type(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + + public Response type(byte[] key) { + Client c = getClient(key); + c.type(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + public Response expire(String key, int seconds) { Client c = getClient(key); c.expire(key, seconds); @@ -67,6 +97,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response expire(byte[] key, int seconds) { + Client c = getClient(key); + c.expire(key, seconds); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response expireAt(String key, long unixTime) { Client c = getClient(key); c.expireAt(key, unixTime); @@ -74,6 +111,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response expireAt(byte[] key, long unixTime) { + Client c = getClient(key); + c.expireAt(key, unixTime); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response ttl(String key) { Client c = getClient(key); c.ttl(key); @@ -81,6 +125,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response ttl(byte[] key) { + Client c = getClient(key); + c.ttl(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response getSet(String key, String value) { Client c = getClient(key); c.getSet(key, value); @@ -88,6 +139,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response getSet(byte[] key, byte[] value) { + Client c = getClient(key); + c.getSet(key, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + public Response setnx(String key, String value) { Client c = getClient(key); c.setnx(key, value); @@ -95,11 +153,25 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } - public Response setex(String key, int seconds, String value) { + public Response setnx(byte[] key, byte[] value) { + Client c = getClient(key); + c.setnx(key, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response setex(String key, int seconds, String value) { Client c = getClient(key); c.setex(key, seconds, value); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); + return getResponse(BuilderFactory.STRING); + } + + public Response setex(byte[] key, int seconds, byte[] value) { + Client c = getClient(key); + c.setex(key, seconds, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); } public Response decrBy(String key, long integer) { @@ -109,6 +181,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response decrBy(byte[] key, long integer) { + Client c = getClient(key); + c.decrBy(key, integer); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response decr(String key) { Client c = getClient(key); c.decr(key); @@ -116,7 +195,21 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } - public Response incrBy(String key, int integer) { + public Response decr(byte[] key) { + Client c = getClient(key); + c.decr(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response incrBy(String key, long integer) { + Client c = getClient(key); + c.incrBy(key, integer); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response incrBy(byte[] key, long integer) { Client c = getClient(key); c.incrBy(key, integer); results.add(new FutureResult(c)); @@ -130,6 +223,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response incr(byte[] key) { + Client c = getClient(key); + c.incr(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response append(String key, String value) { Client c = getClient(key); c.append(key, value); @@ -137,6 +237,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response append(byte[] key, byte[] value) { + Client c = getClient(key); + c.append(key, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response substr(String key, int start, int end) { Client c = getClient(key); c.substr(key, start, end); @@ -144,6 +251,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response substr(byte[] key, int start, int end) { + Client c = getClient(key); + c.substr(key, start, end); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + public Response hset(String key, String field, String value) { Client c = getClient(key); c.hset(key, field, value); @@ -151,6 +265,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response hset(byte[] key, byte[] field, byte[] value) { + Client c = getClient(key); + c.hset(key, field, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response hget(String key, String field) { Client c = getClient(key); c.hget(key, field); @@ -158,6 +279,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response hget(byte[] key, byte[] field) { + Client c = getClient(key); + c.hget(key, field); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + public Response hsetnx(String key, String field, String value) { Client c = getClient(key); c.hsetnx(key, field, value); @@ -165,6 +293,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response hsetnx(byte[] key, byte[] field, byte[] value) { + Client c = getClient(key); + c.hsetnx(key, field, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response hmset(String key, Map hash) { Client c = getClient(key); c.hmset(key, hash); @@ -172,6 +307,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response hmset(byte[] key, Map hash) { + Client c = getClient(key); + c.hmset(key, hash); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + public Response> hmget(String key, String... fields) { Client c = getClient(key); c.hmget(key, fields); @@ -179,7 +321,21 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING_LIST); } - public Response hincrBy(String key, String field, int value) { + public Response> hmget(byte[] key, byte[]... fields) { + Client c = getClient(key); + c.hmget(key, fields); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response hincrBy(String key, String field, long value) { + Client c = getClient(key); + c.hincrBy(key, field, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response hincrBy(byte[] key, byte[] field, long value) { Client c = getClient(key); c.hincrBy(key, field, value); results.add(new FutureResult(c)); @@ -193,6 +349,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.BOOLEAN); } + public Response hexists(byte[] key, byte[] field) { + Client c = getClient(key); + c.hexists(key, field); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.BOOLEAN); + } + public Response hdel(String key, String field) { Client c = getClient(key); c.hdel(key, field); @@ -200,6 +363,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response hdel(byte[] key, byte[] field) { + Client c = getClient(key); + c.hdel(key, field); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response hlen(String key) { Client c = getClient(key); c.hlen(key); @@ -207,6 +377,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response hlen(byte[] key) { + Client c = getClient(key); + c.hlen(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response> hkeys(String key) { Client c = getClient(key); c.hkeys(key); @@ -214,13 +391,27 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING_SET); } - public Response> hvals(String key) { + public Response> hkeys(byte[] key) { Client c = getClient(key); - c.hvals(key); + c.hkeys(key); results.add(new FutureResult(c)); return getResponse(BuilderFactory.STRING_SET); } + public Response> hvals(String key) { + Client c = getClient(key); + c.hvals(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> hvals(byte[] key) { + Client c = getClient(key); + c.hvals(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_LIST); + } + public Response> hgetAll(String key) { Client c = getClient(key); c.hgetAll(key); @@ -228,6 +419,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING_MAP); } + public Response> hgetAll(byte[] key) { + Client c = getClient(key); + c.hgetAll(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_MAP); + } + public Response rpush(String key, String string) { Client c = getClient(key); c.rpush(key, string); @@ -235,6 +433,27 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response rpush(byte[] key, byte[] string) { + Client c = getClient(key); + c.rpush(key, string); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response rpushx(String key, String string) { + Client c = getClient(key); + c.rpushx(key, string); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response rpushx(byte[] key, byte[] string) { + Client c = getClient(key); + c.rpushx(key, string); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response lpush(String key, String string) { Client c = getClient(key); c.lpush(key, string); @@ -242,6 +461,27 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response lpush(byte[] key, byte[] string) { + Client c = getClient(key); + c.lpush(key, string); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response lpushx(String key, String string) { + Client c = getClient(key); + c.lpushx(key, string); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response lpushx(byte[] key, byte[] bytes) { + Client c = getClient(key); + c.lpushx(key, bytes); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response llen(String key) { Client c = getClient(key); c.llen(key); @@ -249,20 +489,55 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } - public Response> lrange(String key, int start, int end) { + public Response llen(byte[] key) { + Client c = getClient(key); + c.llen(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response> lrange(String key, long start, long end) { Client c = getClient(key); c.lrange(key, start, end); results.add(new FutureResult(c)); return getResponse(BuilderFactory.STRING_LIST); } - public Response ltrim(String key, int start, int end) { + public Response> lrange(byte[] key, long start, long end) { + Client c = getClient(key); + c.lrange(key, start, end); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response ltrim(String key, long start, long end) { Client c = getClient(key); c.ltrim(key, start, end); results.add(new FutureResult(c)); return getResponse(BuilderFactory.STRING); } + public Response ltrim(byte[] key, long start, long end) { + Client c = getClient(key); + c.ltrim(key, start, end); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + + public Response persist(String key) { + Client c = getClient(key); + c.persist(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response persist(byte[] key) { + Client c = getClient(key); + c.persist(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response lindex(String key, int index) { Client c = getClient(key); c.lindex(key, index); @@ -270,14 +545,35 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } - public Response lset(String key, int index, String value) { + public Response lindex(byte[] key, int index) { + Client c = getClient(key); + c.lindex(key, index); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + + public Response lset(String key, long index, String value) { Client c = getClient(key); c.lset(key, index, value); results.add(new FutureResult(c)); return getResponse(BuilderFactory.STRING); } - public Response lrem(String key, int count, String value) { + public Response lset(byte[] key, long index, byte[] value) { + Client c = getClient(key); + c.lset(key, index, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + + public Response lrem(String key, long count, String value) { + Client c = getClient(key); + c.lrem(key, count, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response lrem(byte[] key, long count, byte[] value) { Client c = getClient(key); c.lrem(key, count, value); results.add(new FutureResult(c)); @@ -291,6 +587,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response lpop(byte[] key) { + Client c = getClient(key); + c.lpop(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + public Response rpop(String key) { Client c = getClient(key); c.rpop(key); @@ -298,6 +601,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response rpop(byte[] key) { + Client c = getClient(key); + c.rpop(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + public Response sadd(String key, String member) { Client c = getClient(key); c.sadd(key, member); @@ -305,6 +615,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response sadd(byte[] key, byte[] member) { + Client c = getClient(key); + c.sadd(key, member); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response> smembers(String key) { Client c = getClient(key); c.smembers(key); @@ -312,6 +629,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING_SET); } + public Response> smembers(byte[] key) { + Client c = getClient(key); + c.smembers(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_SET); + } + public Response srem(String key, String member) { Client c = getClient(key); c.srem(key, member); @@ -319,6 +643,27 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response srem(byte[] key, byte[] member) { + Client c = getClient(key); + c.srem(key, member); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response strlen(String key) { + Client c = getClient(key); + c.strlen(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response strlen(byte[] key) { + Client c = getClient(key); + c.strlen(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response spop(String key) { Client c = getClient(key); c.spop(key); @@ -326,6 +671,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response spop(byte[] key) { + Client c = getClient(key); + c.spop(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + public Response scard(String key) { Client c = getClient(key); c.scard(key); @@ -333,6 +685,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response scard(byte[] key) { + Client c = getClient(key); + c.scard(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response sismember(String key, String member) { Client c = getClient(key); c.sismember(key, member); @@ -340,6 +699,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.BOOLEAN); } + public Response sismember(byte[] key, byte[] member) { + Client c = getClient(key); + c.sismember(key, member); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.BOOLEAN); + } + public Response srandmember(String key) { Client c = getClient(key); c.srandmember(key); @@ -347,6 +713,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING); } + public Response srandmember(byte[] key) { + Client c = getClient(key); + c.srandmember(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + public Response zadd(String key, double score, String member) { Client c = getClient(key); c.zadd(key, score, member); @@ -354,6 +727,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response zadd(byte[] key, double score, byte[] member) { + Client c = getClient(key); + c.zadd(key, score, member); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response> zrange(String key, int start, int end) { Client c = getClient(key); c.zrange(key, start, end); @@ -361,6 +741,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING_ZSET); } + public Response> zrange(byte[] key, int start, int end) { + Client c = getClient(key); + c.zrange(key, start, end); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + public Response zrem(String key, String member) { Client c = getClient(key); c.zrem(key, member); @@ -368,6 +755,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response zrem(byte[] key, byte[] member) { + Client c = getClient(key); + c.zrem(key, member); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response zincrby(String key, double score, String member) { Client c = getClient(key); c.zincrby(key, score, member); @@ -375,6 +769,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.DOUBLE); } + public Response zincrby(byte[] key, double score, byte[] member) { + Client c = getClient(key); + c.zincrby(key, score, member); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.DOUBLE); + } + public Response zrank(String key, String member) { Client c = getClient(key); c.zrank(key, member); @@ -382,6 +783,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response zrank(byte[] key, byte[] member) { + Client c = getClient(key); + c.zrank(key, member); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response zrevrank(String key, String member) { Client c = getClient(key); c.zrevrank(key, member); @@ -389,6 +797,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response zrevrank(byte[] key, byte[] member) { + Client c = getClient(key); + c.zrevrank(key, member); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response> zrevrange(String key, int start, int end) { Client c = getClient(key); c.zrevrange(key, start, end); @@ -396,6 +811,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING_ZSET); } + public Response> zrevrange(byte[] key, int start, int end) { + Client c = getClient(key); + c.zrevrange(key, start, end); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + public Response> zrangeWithScores(String key, int start, int end) { Client c = getClient(key); c.zrangeWithScores(key, start, end); @@ -403,6 +825,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.TUPLE_ZSET); } + public Response> zrangeWithScores(byte[] key, int start, int end) { + Client c = getClient(key); + c.zrangeWithScores(key, start, end); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + public Response> zrevrangeWithScores(String key, int start, int end) { Client c = getClient(key); c.zrevrangeWithScores(key, start, end); @@ -410,6 +839,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.TUPLE_ZSET); } + public Response> zrevrangeWithScores(byte[] key, int start, int end) { + Client c = getClient(key); + c.zrevrangeWithScores(key, start, end); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + public Response zcard(String key) { Client c = getClient(key); c.zcard(key); @@ -417,6 +853,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response zcard(byte[] key) { + Client c = getClient(key); + c.zcard(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response zscore(String key, String member) { Client c = getClient(key); c.zscore(key, member); @@ -424,13 +867,27 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.DOUBLE); } - public Response sort(String key) { + public Response zscore(byte[] key, byte[] member) { Client c = getClient(key); - c.sort(key); + c.zscore(key, member); results.add(new FutureResult(c)); return getResponse(BuilderFactory.DOUBLE); } + public Response sort(String key) { + Client c = getClient(key); + c.sort(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response sort(byte[] key) { + Client c = getClient(key); + c.sort(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response> sort(String key, SortingParams sortingParameters) { Client c = getClient(key); c.sort(key, sortingParameters); @@ -438,6 +895,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING_LIST); } + public Response> sort(byte[] key, SortingParams sortingParameters) { + Client c = getClient(key); + c.sort(key, sortingParameters); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_LIST); + } + public Response zcount(String key, double min, double max) { Client c = getClient(key); c.zcount(key, min, max); @@ -445,6 +909,69 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response zcount(byte[] key, double min, double max) { + Client c = getClient(key); + c.zcount(key, toByteArray(min), toByteArray(max)); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response> zrevrangeByScore(String key, String max, String min) { + Client c = getClient(key); + c.zrevrangeByScore(key, min, max); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrangeByScore(String key, double max, double min) { + Client c = getClient(key); + c.zrevrangeByScore(key, min, max); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrangeByScore(byte[] key, double max, double min) { + Client c = getClient(key); + c.zrevrangeByScore(key, toByteArray(min), toByteArray(max)); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min) { + Client c = getClient(key); + c.zrevrangeByScore(key, min, max); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrangeByScore(String key, double max, double min, int offset, int count) { + Client c = getClient(key); + c.zrevrangeByScore(key, min, max, offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrangeByScore(byte[] key, double max, double min, int offset, int count) { + Client c = getClient(key); + c.zrevrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min, int offset, int count) { + Client c = getClient(key); + c.zrevrangeByScore(key, min, max, offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrangeByScore(String key, String min, String max) { + Client c = getClient(key); + c.zrangeByScore(key, min, max); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + public Response> zrangeByScore(String key, double min, double max) { Client c = getClient(key); c.zrangeByScore(key, min, max); @@ -452,6 +979,20 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING_ZSET); } + public Response> zrangeByScore(byte[] key, double min, double max) { + Client c = getClient(key); + c.zrangeByScore(key, toByteArray(min), toByteArray(max)); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrangeByScore(byte[] key, byte[] min, byte[] max) { + Client c = getClient(key); + c.zrangeByScore(key, min, max); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + public Response> zrangeByScore(String key, double min, double max, int offset, int count) { Client c = getClient(key); @@ -460,6 +1001,22 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.STRING_ZSET); } + public Response> zrangeByScore(byte[] key, double min, double max, + int offset, int count) { + Client c = getClient(key); + c.zrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrangeByScore(byte[] key, byte[] min, byte[] max, + int offset, int count) { + Client c = getClient(key); + c.zrangeByScore(key, min, max, offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_ZSET); + } + public Response> zrangeByScoreWithScores(String key, double min, double max) { Client c = getClient(key); c.zrangeByScoreWithScores(key, min, max); @@ -467,6 +1024,20 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.TUPLE_ZSET); } + public Response> zrangeByScoreWithScores(byte[] key, double min, double max) { + Client c = getClient(key); + c.zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max)); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max) { + Client c = getClient(key); + c.zrangeByScoreWithScores(key, min, max); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + public Response> zrangeByScoreWithScores(String key, double min, double max, int offset, int count) { Client c = getClient(key); @@ -475,6 +1046,64 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.TUPLE_ZSET); } + public Response> zrangeByScoreWithScores(byte[] key, double min, double max, + int offset, int count) { + Client c = getClient(key); + c.zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, + int offset, int count) { + Client c = getClient(key); + c.zrangeByScoreWithScores(key, min, max, offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrevrangeByScoreWithScores(String key, double max, double min) { + Client c = getClient(key); + c.zrevrangeByScoreWithScores(key, min, max); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min) { + Client c = getClient(key); + c.zrevrangeByScoreWithScores(key, toByteArray(min), toByteArray(max)); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min) { + Client c = getClient(key); + c.zrevrangeByScoreWithScores(key, min, max); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrevrangeByScoreWithScores(String key, double max, double min, int offset, int count) { + Client c = getClient(key); + c.zrevrangeByScoreWithScores(key, min, max, offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min, int offset, int count) { + Client c = getClient(key); + c.zrevrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min, int offset, int count) { + Client c = getClient(key); + c.zrevrangeByScoreWithScores(key, min, max, offset, count); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + public Response zremrangeByRank(String key, int start, int end) { Client c = getClient(key); c.zremrangeByRank(key, start, end); @@ -482,6 +1111,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response zremrangeByRank(byte[] key, int start, int end) { + Client c = getClient(key); + c.zremrangeByRank(key, start, end); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response zremrangeByScore(String key, double start, double end) { Client c = getClient(key); c.zremrangeByScore(key, start, end); @@ -489,6 +1125,20 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response zremrangeByScore(byte[] key, double start, double end) { + Client c = getClient(key); + c.zremrangeByScore(key, toByteArray(start), toByteArray(end)); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response zremrangeByScore(byte[] key, byte[] start, byte[] end) { + Client c = getClient(key); + c.zremrangeByScore(key, start, end); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response linsert(String key, LIST_POSITION where, String pivot, String value) { Client c = getClient(key); @@ -497,6 +1147,14 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.LONG); } + public Response linsert(byte[] key, LIST_POSITION where, byte[] pivot, + byte[] value) { + Client c = getClient(key); + c.linsert(key, where, pivot, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response getbit(String key, long offset) { Client c = getClient(key); c.getbit(key, offset); @@ -504,6 +1162,13 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.BOOLEAN); } + public Response getbit(byte[] key, long offset) { + Client c = getClient(key); + c.getbit(key, offset); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.BOOLEAN); + } + public Response setbit(String key, long offset, boolean value) { Client c = getClient(key); c.setbit(key, offset, value); @@ -511,15 +1176,35 @@ public class ShardedJedisPipeline extends Queable { return getResponse(BuilderFactory.BOOLEAN); } + public Response setbit(byte[] key, long offset, byte[] value) { + Client c = getClient(key); + c.setbit(key, offset, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.BOOLEAN); + } + public Response setrange(String key, long offset, String value) { Client c = getClient(key); c.setrange(key, offset, value); results.add(new FutureResult(c)); return getResponse(BuilderFactory.LONG); - } - public Response getrange(String key, long startOffset, long endOffset) { + public Response setrange(byte[] key, long offset, byte[] value) { + Client c = getClient(key); + c.setrange(key, offset, value); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response getrange(String key, long startOffset, long endOffset) { + Client c = getClient(key); + c.getrange(key, startOffset, endOffset); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + + public Response getrange(byte[] key, long startOffset, long endOffset) { Client c = getClient(key); c.getrange(key, startOffset, endOffset); results.add(new FutureResult(c)); @@ -574,4 +1259,10 @@ public class ShardedJedisPipeline extends Queable { clients.add(client); return client; } + + private Client getClient(byte[] key) { + Client client = jedis.getShard(key).getClient(); + clients.add(client); + return client; + } } \ No newline at end of file From 45be143e23553395f7ee7f26fb86f77f39300689 Mon Sep 17 00:00:00 2001 From: shendley Date: Tue, 18 Dec 2012 10:26:56 -0500 Subject: [PATCH 07/23] Fixed binary safe pipeline commands and added tests for pipelined hash functions --- .../redis/clients/jedis/BuilderFactory.java | 25 +++++++ .../java/redis/clients/jedis/Pipeline.java | 67 +++++++++---------- .../clients/jedis/tests/PipeliningTest.java | 59 ++++++++++++++-- 3 files changed, 112 insertions(+), 39 deletions(-) mode change 100644 => 100755 src/main/java/redis/clients/jedis/BuilderFactory.java mode change 100644 => 100755 src/main/java/redis/clients/jedis/Pipeline.java mode change 100644 => 100755 src/test/java/redis/clients/jedis/tests/PipeliningTest.java diff --git a/src/main/java/redis/clients/jedis/BuilderFactory.java b/src/main/java/redis/clients/jedis/BuilderFactory.java old mode 100644 new mode 100755 index 8a2320a..bebd2d6 --- a/src/main/java/redis/clients/jedis/BuilderFactory.java +++ b/src/main/java/redis/clients/jedis/BuilderFactory.java @@ -144,6 +144,13 @@ public class BuilderFactory { } List l = (List) data; final Set result = new LinkedHashSet(l); + for (final byte[] barray : l) { + if (barray == null) { + result.add(null); + } else { + result.add(barray); + } + } return result; } @@ -151,6 +158,24 @@ public class BuilderFactory { return "ZSet"; } }; + public static final Builder> BYTE_ARRAY_MAP = new Builder>() { + @SuppressWarnings("unchecked") + public Map build(Object data) { + final List flatHash = (List) data; + final Map hash = new HashMap(); + final Iterator iterator = flatHash.iterator(); + while (iterator.hasNext()) { + hash.put(iterator.next(), iterator.next()); + } + + return hash; + } + + public String toString() { + return "Map"; + } + + }; public static final Builder> STRING_ZSET = new Builder>() { @SuppressWarnings("unchecked") diff --git a/src/main/java/redis/clients/jedis/Pipeline.java b/src/main/java/redis/clients/jedis/Pipeline.java old mode 100644 new mode 100755 index d89efea..e032dbe --- a/src/main/java/redis/clients/jedis/Pipeline.java +++ b/src/main/java/redis/clients/jedis/Pipeline.java @@ -78,7 +78,6 @@ public class Pipeline extends Queable { * right response type (usually it is a waste of time). * * @return A list of all the responses in the order you executed them. - * @see sync */ public List syncAndReturnAll() { List unformatted = client.getAll(); @@ -109,9 +108,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_LIST); } - public Response> blpop(byte[]... args) { + public Response> blpop(byte[]... args) { client.blpop(args); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response> brpop(String... args) { @@ -119,9 +118,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_LIST); } - public Response> brpop(byte[]... args) { + public Response> brpop(byte[]... args) { client.brpop(args); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response decr(String key) { @@ -159,9 +158,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING); } - public Response echo(byte[] string) { + public Response echo(byte[] string) { client.echo(string); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response exists(String key) { @@ -250,9 +249,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING); } - public Response hget(byte[] key, byte[] field) { + public Response hget(byte[] key, byte[] field) { client.hget(key, field); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response> hgetAll(String key) { @@ -260,9 +259,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_MAP); } - public Response> hgetAll(byte[] key) { + public Response> hgetAll(byte[] key) { client.hgetAll(key); - return getResponse(BuilderFactory.STRING_MAP); + return getResponse(BuilderFactory.BYTE_ARRAY_MAP); } public Response hincrBy(String key, String field, long value) { @@ -280,9 +279,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_SET); } - public Response> hkeys(byte[] key) { + public Response> hkeys(byte[] key) { client.hkeys(key); - return getResponse(BuilderFactory.STRING_SET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response hlen(String key) { @@ -300,9 +299,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_LIST); } - public Response> hmget(byte[] key, byte[]... fields) { + public Response> hmget(byte[] key, byte[]... fields) { client.hmget(key, fields); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response hmset(String key, Map hash) { @@ -340,9 +339,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_LIST); } - public Response> hvals(byte[] key) { + public Response> hvals(byte[] key) { client.hvals(key); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response incr(String key) { @@ -370,9 +369,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_SET); } - public Response> keys(byte[] pattern) { + public Response> keys(byte[] pattern) { client.keys(pattern); - return getResponse(BuilderFactory.STRING_SET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response lindex(String key, int index) { @@ -380,9 +379,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING); } - public Response lindex(byte[] key, int index) { + public Response lindex(byte[] key, int index) { client.lindex(key, index); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response linsert(String key, LIST_POSITION where, @@ -412,9 +411,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING); } - public Response lpop(byte[] key) { + public Response lpop(byte[] key) { client.lpop(key); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response lpush(String key, String string) { @@ -442,9 +441,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_LIST); } - public Response> lrange(byte[] key, long start, long end) { + public Response> lrange(byte[] key, long start, long end) { client.lrange(key, start, end); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response lrem(String key, long count, String value) { @@ -482,9 +481,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_LIST); } - public Response> mget(byte[]... keys) { + public Response> mget(byte[]... keys) { client.mget(keys); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response move(String key, int dbIndex) { @@ -552,9 +551,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING); } - public Response rpop(byte[] key) { + public Response rpop(byte[] key) { client.rpop(key); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response rpoplpush(String srckey, String dstkey) { @@ -562,9 +561,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING); } - public Response rpoplpush(byte[] srckey, byte[] dstkey) { + public Response rpoplpush(byte[] srckey, byte[] dstkey) { client.rpoplpush(srckey, dstkey); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response rpush(String key, String string) { @@ -612,9 +611,9 @@ public class Pipeline extends Queable { return getResponse(BuilderFactory.STRING_SET); } - public Response> sdiff(byte[]... keys) { + public Response> sdiff(byte[]... keys) { client.sdiff(keys); - return getResponse(BuilderFactory.STRING_SET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response sdiffstore(String dstkey, String... keys) { @@ -1319,4 +1318,4 @@ public class Pipeline extends Queable { client.select(index); return getResponse(BuilderFactory.STRING); } -} \ No newline at end of file +} diff --git a/src/test/java/redis/clients/jedis/tests/PipeliningTest.java b/src/test/java/redis/clients/jedis/tests/PipeliningTest.java old mode 100644 new mode 100755 index 568a2cd..ffe2c9b --- a/src/test/java/redis/clients/jedis/tests/PipeliningTest.java +++ b/src/test/java/redis/clients/jedis/tests/PipeliningTest.java @@ -8,10 +8,7 @@ import redis.clients.jedis.exceptions.JedisDataException; import redis.clients.jedis.tests.HostAndPortUtil.HostAndPort; import java.io.UnsupportedEncodingException; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; public class PipeliningTest extends Assert { private static HostAndPort hnp = HostAndPortUtil.getRedisServers().get(0); @@ -100,7 +97,59 @@ public class PipeliningTest extends Assert { assertNotNull(score.get()); } - + + @Test + public void pipelineBinarySafeHashCommands() { + jedis.hset("key".getBytes(), "f1".getBytes(), "v111".getBytes()); + jedis.hset("key".getBytes(), "f22".getBytes(), "v2222".getBytes()); + + Pipeline p = jedis.pipelined(); + Response> fmap = p.hgetAll("key".getBytes()); + Response> fkeys = p.hkeys("key".getBytes()); + Response> fordered = p.hmget("key".getBytes(), "f22".getBytes(), "f1".getBytes()); + Response> fvals = p.hvals("key".getBytes()); + p.sync(); + + assertNotNull(fmap.get()); + // we have to do these strange contortions because byte[] is not a very good key + // for a java Map. It only works with equality (you need the exact key object to retrieve + // the value) I recommend we switch to using ByteBuffer or something similar: + // http://stackoverflow.com/questions/1058149/using-a-byte-array-as-hashmap-key-java + Map map = fmap.get(); + Set mapKeys = map.keySet(); + Iterator iterMap = mapKeys.iterator(); + byte[] firstMapKey = iterMap.next(); + byte[] secondMapKey = iterMap.next(); + assertFalse(iterMap.hasNext()); + verifyHasBothValues(firstMapKey, secondMapKey, "f1".getBytes(), "f22".getBytes()); + byte[] firstMapValue = map.get(firstMapKey); + byte[] secondMapValue = map.get(secondMapKey); + verifyHasBothValues(firstMapValue, secondMapValue, "v111".getBytes(), "v2222".getBytes()); + + assertNotNull(fkeys.get()); + Iterator iter = fkeys.get().iterator(); + byte[] firstKey = iter.next(); + byte[] secondKey = iter.next(); + assertFalse(iter.hasNext()); + verifyHasBothValues(firstKey, secondKey, "f1".getBytes(), "f22".getBytes()); + + assertNotNull(fordered.get()); + assertArrayEquals("v2222".getBytes(), fordered.get().get(0)); + assertArrayEquals("v111".getBytes(), fordered.get().get(1)); + + assertNotNull(fvals.get()); + assertEquals(2, fvals.get().size()); + byte[] firstValue = fvals.get().get(0); + byte[] secondValue = fvals.get().get(1); + verifyHasBothValues(firstValue, secondValue, "v111".getBytes(), "v2222".getBytes()); + } + + private void verifyHasBothValues(byte[] firstKey, byte[] secondKey, byte[] value1, byte[] value2) { + assertFalse(Arrays.equals(firstKey, secondKey)); + assertTrue(Arrays.equals(firstKey, value1) || Arrays.equals(firstKey, value2)); + assertTrue(Arrays.equals(secondKey, value1) || Arrays.equals(secondKey, value2)); + } + @Test public void pipelineSelect() { Pipeline p = jedis.pipelined(); From c0bda88e2c1637cc9d0a5ccfef8dbe7effe7f503 Mon Sep 17 00:00:00 2001 From: samhendley Date: Mon, 24 Dec 2012 10:45:19 -0500 Subject: [PATCH 08/23] Normalized Pipeline[] interfaces and extracted all of the non-shardable commands into the MultiKey* interfaces --- .../clients/jedis/BasicRedisPipeline.java | 44 +++++++++ .../clients/jedis/BinaryRedisPipeline.java | 26 ++++-- .../jedis/MultiKeyBinaryRedisPipeline.java | 63 +++++++++++++ .../jedis/MultiKeyCommandsPipeline.java | 65 +++++++++++++ .../java/redis/clients/jedis/Pipeline.java | 87 +++++++++++++---- .../redis/clients/jedis/RedisPipeline.java | 10 ++ .../clients/jedis/ShardedJedisPipeline.java | 93 +++++++++++++++---- 7 files changed, 343 insertions(+), 45 deletions(-) create mode 100644 src/main/java/redis/clients/jedis/BasicRedisPipeline.java create mode 100644 src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java create mode 100644 src/main/java/redis/clients/jedis/MultiKeyCommandsPipeline.java diff --git a/src/main/java/redis/clients/jedis/BasicRedisPipeline.java b/src/main/java/redis/clients/jedis/BasicRedisPipeline.java new file mode 100644 index 0000000..0b4ac36 --- /dev/null +++ b/src/main/java/redis/clients/jedis/BasicRedisPipeline.java @@ -0,0 +1,44 @@ +package redis.clients.jedis; + + +import java.util.List; + +/** + * Pipelined responses for all of the low level, non key related commands + */ +public interface BasicRedisPipeline { + + Response bgrewriteaof(); + + Response bgsave(); + + Response configGet(String pattern); + + Response configSet(String parameter, String value); + + Response configResetStat(); + + Response save(); + + Response lastsave(); + + Response discard(); + + Response> exec(); + + Response multi(); + + Response flushDB(); + + Response flushAll(); + + Response info(); + + Response dbSize(); + + Response shutdown(); + + Response ping(); + + Response select(int index); +} diff --git a/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java index 24b6089..959f915 100644 --- a/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java +++ b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java @@ -10,10 +10,18 @@ import java.util.Set; public interface BinaryRedisPipeline { Response append(byte[] key, byte[] value); + Response> blpop(byte[] arg); + + Response> brpop(byte[] arg); + Response decr(byte[] key); Response decrBy(byte[] key, long integer); + Response del(byte[] keys); + + Response echo(byte[] string); + Response exists(byte[] key); Response expire(byte[] key, int seconds); @@ -32,17 +40,17 @@ public interface BinaryRedisPipeline { Response hexists(byte[] key, byte[] field); - Response hget(byte[] key, byte[] field); + Response hget(byte[] key, byte[] field); - Response> hgetAll(byte[] key); + Response> hgetAll(byte[] key); Response hincrBy(byte[] key, byte[] field, long value); - Response> hkeys(byte[] key); + Response> hkeys(byte[] key); Response hlen(byte[] key); - Response> hmget(byte[] key, byte[]... fields); + Response> hmget(byte[] key, byte[]... fields); Response hmset(byte[] key, Map hash); @@ -50,26 +58,26 @@ public interface BinaryRedisPipeline { Response hsetnx(byte[] key, byte[] field, byte[] value); - Response> hvals(byte[] key); + Response> hvals(byte[] key); Response incr(byte[] key); Response incrBy(byte[] key, long integer); - Response lindex(byte[] key, int index); + Response lindex(byte[] key, int index); Response linsert(byte[] key, BinaryClient.LIST_POSITION where, byte[] pivot, byte[] value); Response llen(byte[] key); - Response lpop(byte[] key); + Response lpop(byte[] key); Response lpush(byte[] key, byte[] string); Response lpushx(byte[] key, byte[] bytes); - Response> lrange(byte[] key, long start, long end); + Response> lrange(byte[] key, long start, long end); Response lrem(byte[] key, long count, byte[] value); @@ -79,7 +87,7 @@ public interface BinaryRedisPipeline { Response persist(byte[] key); - Response rpop(byte[] key); + Response rpop(byte[] key); Response rpush(byte[] key, byte[] string); diff --git a/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java new file mode 100644 index 0000000..12e2368 --- /dev/null +++ b/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java @@ -0,0 +1,63 @@ +package redis.clients.jedis; + + +import java.util.List; +import java.util.Set; + +/** + * Multikey related commands (these are split out because they are non-shardable) + */ +public interface MultiKeyBinaryRedisPipeline { + + Response del(byte[]... keys); + + Response> blpop(byte[]... args); + + Response> brpop(byte[]... args); + + Response> keys(byte[] pattern); + + Response> mget(byte[]... keys); + + Response mset(byte[]... keysvalues); + + Response msetnx(byte[]... keysvalues); + + Response rename(byte[] oldkey, byte[] newkey); + + Response renamenx(byte[] oldkey, byte[] newkey); + + Response rpoplpush(byte[] srckey, byte[] dstkey); + + Response> sdiff(byte[]... keys); + + Response sdiffstore(byte[] dstkey, byte[]... keys); + + Response> sinter(byte[]... keys); + + Response sinterstore(byte[] dstkey, byte[]... keys); + + Response smove(byte[] srckey, byte[] dstkey, byte[] member); + + Response> sort(byte[] key, SortingParams sortingParameters, byte[] dstkey); + + Response> sort(byte[] key, byte[] dstkey); + + Response> sunion(byte[]... keys); + + Response sunionstore(byte[] dstkey, byte[]... keys); + + Response watch(byte[]... keys); + + Response zinterstore(byte[] dstkey, byte[]... sets); + + Response zinterstore(byte[] dstkey, ZParams params, byte[]... sets); + + Response zunionstore(byte[] dstkey, byte[]... sets); + + Response zunionstore(byte[] dstkey, ZParams params, byte[]... sets); + + Response brpoplpush(byte[] source, byte[] destination, int timeout); + + Response publish(byte[] channel, byte[] message); +} diff --git a/src/main/java/redis/clients/jedis/MultiKeyCommandsPipeline.java b/src/main/java/redis/clients/jedis/MultiKeyCommandsPipeline.java new file mode 100644 index 0000000..9960537 --- /dev/null +++ b/src/main/java/redis/clients/jedis/MultiKeyCommandsPipeline.java @@ -0,0 +1,65 @@ +package redis.clients.jedis; + + +import java.util.List; +import java.util.Set; + + +/** + * Multikey related commands (these are split out because they are non-shardable) + */ +public interface MultiKeyCommandsPipeline { + Response del(String... keys); + + Response> blpop(String... args); + + Response> brpop(String... args); + + Response> keys(String pattern); + + Response> mget(String... keys); + + Response mset(String... keysvalues); + + Response msetnx(String... keysvalues); + + Response rename(String oldkey, String newkey); + + Response renamenx(String oldkey, String newkey); + + Response rpoplpush(String srckey, String dstkey); + + Response> sdiff(String... keys); + + Response sdiffstore(String dstkey, String... keys); + + Response> sinter(String... keys); + + Response sinterstore(String dstkey, String... keys); + + Response smove(String srckey, String dstkey, String member); + + Response> sort(String key, SortingParams sortingParameters, String dstkey); + + Response> sort(String key, String dstkey); + + Response> sunion(String... keys); + + Response sunionstore(String dstkey, String... keys); + + Response watch(String... keys); + + Response zinterstore(String dstkey, String... sets); + + Response zinterstore(String dstkey, ZParams params, String... sets); + + Response zunionstore(String dstkey, String... sets); + + Response zunionstore(String dstkey, ZParams params, String... sets); + + Response brpoplpush(String source, String destination, int timeout); + + Response publish(String channel, String message); + + Response randomKey(); +} diff --git a/src/main/java/redis/clients/jedis/Pipeline.java b/src/main/java/redis/clients/jedis/Pipeline.java index f93b95a..ae8518c 100755 --- a/src/main/java/redis/clients/jedis/Pipeline.java +++ b/src/main/java/redis/clients/jedis/Pipeline.java @@ -9,7 +9,12 @@ import java.util.Set; import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.jedis.exceptions.JedisDataException; -public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipeline { +public class Pipeline extends Queable implements + BasicRedisPipeline, + BinaryRedisPipeline, + RedisPipeline, + MultiKeyBinaryRedisPipeline, + MultiKeyCommandsPipeline { private MultiResponseBuilder currentMulti; @@ -59,6 +64,8 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel this.client = client; } + + /** * Syncronize pipeline by reading all responses. This operation close the * pipeline. In order to get return values from pipelined commands, capture @@ -103,6 +110,34 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return getResponse(BuilderFactory.LONG); } + public Response> blpop(String arg) { + String[] temp = new String[1]; + temp[0] = arg; + client.blpop(temp); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> brpop(String arg) { + String[] temp = new String[1]; + temp[0] = arg; + client.brpop(temp); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> blpop(byte[] arg) { + byte[][] temp = new byte[1][]; + temp[0] = arg; + client.blpop(temp); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> brpop(byte[] arg) { + byte[][] temp = new byte[1][]; + temp[0] = arg; + client.brpop(temp); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + public Response> blpop(String... args) { client.blpop(args); return getResponse(BuilderFactory.STRING_LIST); @@ -143,11 +178,21 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return getResponse(BuilderFactory.LONG); } + public Response del(String key) { + client.del(key); + return getResponse(BuilderFactory.LONG); + } + public Response del(String... keys) { client.del(keys); return getResponse(BuilderFactory.LONG); } + public Response del(byte[] key) { + client.del(key); + return getResponse(BuilderFactory.LONG); + } + public Response del(byte[]... keys) { client.del(keys); return getResponse(BuilderFactory.LONG); @@ -541,9 +586,9 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return getResponse(BuilderFactory.STRING); } - public Response rename(byte[] oldkey, byte[] newkey) { + public Response rename(byte[] oldkey, byte[] newkey) { client.rename(oldkey, newkey); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response renamenx(String oldkey, String newkey) { @@ -691,9 +736,9 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return getResponse(BuilderFactory.STRING_SET); } - public Response> sinter(byte[]... keys) { + public Response> sinter(byte[]... keys) { client.sinter(keys); - return getResponse(BuilderFactory.STRING_SET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response sinterstore(String dstkey, String... keys) { @@ -764,10 +809,10 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return getResponse(BuilderFactory.STRING_LIST); } - public Response> sort(byte[] key, + public Response> sort(byte[] key, SortingParams sortingParameters, byte[] dstkey) { client.sort(key, sortingParameters, dstkey); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response> sort(String key, String dstkey) { @@ -775,9 +820,9 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return getResponse(BuilderFactory.STRING_LIST); } - public Response> sort(byte[] key, byte[] dstkey) { + public Response> sort(byte[] key, byte[] dstkey) { client.sort(key, dstkey); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response spop(String key) { @@ -1250,10 +1295,10 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return getResponse(BuilderFactory.STRING); } - public Response brpoplpush(byte[] source, byte[] destination, + public Response brpoplpush(byte[] source, byte[] destination, int timeout) { client.brpoplpush(source, destination, timeout); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response configResetStat() { @@ -1283,10 +1328,11 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return response; } - public void multi() { + public Response multi() { client.multi(); - getResponse(BuilderFactory.STRING); //Expecting OK + Response response = getResponse(BuilderFactory.STRING); //Expecting OK currentMulti = new MultiResponseBuilder(); + return response; } public Response publish(String channel, String message) { @@ -1299,6 +1345,16 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return getResponse(BuilderFactory.LONG); } + public Response randomKey() { + client.randomKey(); + return getResponse(BuilderFactory.STRING); + } + + public Response randomKeyBinary() { + client.randomKey(); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + public Response flushDB() { client.flushDB(); return getResponse(BuilderFactory.STRING); @@ -1329,11 +1385,6 @@ public class Pipeline extends Queable implements BinaryRedisPipeline, RedisPipel return getResponse(BuilderFactory.STRING); } - public Response randomKey() { - client.randomKey(); - return getResponse(BuilderFactory.STRING); - } - public Response select(int index){ client.select(index); return getResponse(BuilderFactory.STRING); diff --git a/src/main/java/redis/clients/jedis/RedisPipeline.java b/src/main/java/redis/clients/jedis/RedisPipeline.java index ca3370e..570e620 100644 --- a/src/main/java/redis/clients/jedis/RedisPipeline.java +++ b/src/main/java/redis/clients/jedis/RedisPipeline.java @@ -10,10 +10,18 @@ import java.util.Set; public interface RedisPipeline { Response append(String key, String value); + Response> blpop(String arg); + + Response> brpop(String arg); + Response decr(String key); Response decrBy(String key, long integer); + Response del(String key); + + Response echo(String string); + Response exists(String key); Response expire(String key, int seconds); @@ -102,6 +110,8 @@ public interface RedisPipeline { Response setnx(String key, String value); + Response setrange(String key, long offset, String value); + Response> smembers(String key); Response sort(String key); diff --git a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java index 48371ac..771cdc9 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java +++ b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java @@ -55,6 +55,63 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.BYTE_ARRAY); } + public Response> blpop(byte[] arg) { + byte[][] temp = new byte[1][]; + temp[0] = arg; + Client c = getClient(arg); + c.blpop(temp); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> brpop(byte[] arg) { + byte[][] temp = new byte[1][]; + temp[0] = arg; + Client c = getClient(arg); + c.blpop(temp); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> blpop(String arg) { + String[] temp = new String[1]; + temp[0] = arg; + Client c = getClient(arg); + c.blpop(temp); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> brpop(String arg) { + String[] temp = new String[1]; + temp[0] = arg; + Client c = getClient(arg); + c.brpop(temp); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response echo(byte[] string) { + Client c = getClient(string); + c.echo(string); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response echo(String string) { + Client c = getClient(string); + c.echo(string); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.STRING); + } + + public Response del(byte[] key) { + Client c = getClient(key); + c.del(key); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response del(String key) { Client c = getClient(key); c.del(key); @@ -279,11 +336,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING); } - public Response hget(byte[] key, byte[] field) { + public Response hget(byte[] key, byte[] field) { Client c = getClient(key); c.hget(key, field); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response hsetnx(String key, String field, String value) { @@ -321,11 +378,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_LIST); } - public Response> hmget(byte[] key, byte[]... fields) { + public Response> hmget(byte[] key, byte[]... fields) { Client c = getClient(key); c.hmget(key, fields); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response hincrBy(String key, String field, long value) { @@ -391,11 +448,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_SET); } - public Response> hkeys(byte[] key) { + public Response> hkeys(byte[] key) { Client c = getClient(key); c.hkeys(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_SET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> hvals(String key) { @@ -405,11 +462,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_LIST); } - public Response> hvals(byte[] key) { + public Response> hvals(byte[] key) { Client c = getClient(key); c.hvals(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response> hgetAll(String key) { @@ -419,11 +476,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_MAP); } - public Response> hgetAll(byte[] key) { + public Response> hgetAll(byte[] key) { Client c = getClient(key); c.hgetAll(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_MAP); + return getResponse(BuilderFactory.BYTE_ARRAY_MAP); } public Response rpush(String key, String string) { @@ -503,11 +560,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_LIST); } - public Response> lrange(byte[] key, long start, long end) { + public Response> lrange(byte[] key, long start, long end) { Client c = getClient(key); c.lrange(key, start, end); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response ltrim(String key, long start, long end) { @@ -545,11 +602,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING); } - public Response lindex(byte[] key, int index) { + public Response lindex(byte[] key, int index) { Client c = getClient(key); c.lindex(key, index); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response lset(String key, long index, String value) { @@ -587,11 +644,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING); } - public Response lpop(byte[] key) { + public Response lpop(byte[] key) { Client c = getClient(key); c.lpop(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response rpop(String key) { @@ -601,11 +658,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING); } - public Response rpop(byte[] key) { + public Response rpop(byte[] key) { Client c = getClient(key); c.rpop(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response sadd(String key, String member) { From 333ac221e189fa6988b9240b1b280863d1fac45c Mon Sep 17 00:00:00 2001 From: samhendley Date: Mon, 24 Dec 2012 11:41:53 -0500 Subject: [PATCH 09/23] extracted interfaces from Jedis --- src/main/java/redis/clients/jedis/Jedis.java | 43 +++++++++++- .../clients/jedis/JedisBasicCommands.java | 40 ++++++++++++ .../redis/clients/jedis/JedisCommands.java | 14 ++++ .../redis/clients/jedis/MultiKeyCommands.java | 65 +++++++++++++++++++ .../redis/clients/jedis/ShardedJedis.java | 20 ++++++ 5 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 src/main/java/redis/clients/jedis/JedisBasicCommands.java create mode 100644 src/main/java/redis/clients/jedis/MultiKeyCommands.java diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index f27c2bc..16b03f6 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -13,7 +13,7 @@ import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.util.SafeEncoder; import redis.clients.util.Slowlog; -public class Jedis extends BinaryJedis implements JedisCommands { +public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommands, JedisBasicCommands { public Jedis(final String host) { super(host); } @@ -114,6 +114,11 @@ public class Jedis extends BinaryJedis implements JedisCommands { return client.getIntegerReply(); } + public Long del(String key) { + client.del(key); + return client.getIntegerReply(); + } + /** * Return the type of the value stored at key in form of a string. The type * can be one of "none", "string", "list", "set". "none" is returned if the @@ -1817,6 +1822,42 @@ public class Jedis extends BinaryJedis implements JedisCommands { return multiBulkReply; } + public List blpop(String... args) { + client.blpop(args); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + + public List brpop(String... args) { + client.brpop(args); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + + public List blpop(String arg) { + String[] args = new String[1]; + args[0] = arg; + client.blpop(args); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + + public List brpop(String arg) { + String[] args = new String[1]; + args[0] = arg; + client.brpop(args); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + /** * Sort a Set or a List accordingly to the specified parameters and store * the result at dstkey. diff --git a/src/main/java/redis/clients/jedis/JedisBasicCommands.java b/src/main/java/redis/clients/jedis/JedisBasicCommands.java new file mode 100644 index 0000000..2f89586 --- /dev/null +++ b/src/main/java/redis/clients/jedis/JedisBasicCommands.java @@ -0,0 +1,40 @@ +package redis.clients.jedis; + +import redis.clients.util.Slowlog; + +import java.util.List; + + +public interface JedisBasicCommands { + List configGet(String pattern); + + String configSet(String parameter, String value); + + Object eval(String script, int keyCount, String... params); + + Object eval(String script, List keys, List args); + + Object eval(String script); + + Object evalsha(String script); + + Object evalsha(String sha1, List keys, List args); + + Object evalsha(String sha1, int keyCount, String... params); + + Boolean scriptExists(String sha1); + + List scriptExists(String... sha1); + + String scriptLoad(String script); + + List slowlogGet(); + + List slowlogGet(long entries); + + Long objectRefcount(String string); + + String objectEncoding(String string); + + Long objectIdletime(String string); +} diff --git a/src/main/java/redis/clients/jedis/JedisCommands.java b/src/main/java/redis/clients/jedis/JedisCommands.java index d4c07f3..842e03f 100644 --- a/src/main/java/redis/clients/jedis/JedisCommands.java +++ b/src/main/java/redis/clients/jedis/JedisCommands.java @@ -14,6 +14,8 @@ public interface JedisCommands { Boolean exists(String key); + Long persist(String key); + String type(String key); Long expire(String key, int seconds); @@ -106,6 +108,8 @@ public interface JedisCommands { String srandmember(String key); + Long strlen(String key); + Long zadd(String key, double score, String member); Long zadd(String key, Map scoreMembers); @@ -190,4 +194,14 @@ public interface JedisCommands { Long lpushx(String key, String string); Long rpushx(String key, String string); + + List blpop(String arg); + + List brpop(String arg); + + Long del(String key); + + String echo(String string); + + Long move(String key, int dbIndex); } diff --git a/src/main/java/redis/clients/jedis/MultiKeyCommands.java b/src/main/java/redis/clients/jedis/MultiKeyCommands.java new file mode 100644 index 0000000..8a333a9 --- /dev/null +++ b/src/main/java/redis/clients/jedis/MultiKeyCommands.java @@ -0,0 +1,65 @@ +package redis.clients.jedis; + + +import java.util.List; +import java.util.Set; + +public interface MultiKeyCommands { + Long del(String... keys); + + List blpop(int timeout, String... keys); + + List brpop(int timeout, String... keys); + + List blpop(String... args); + + List brpop(String... args); + + Set keys(String pattern); + + List mget(String... keys); + + String mset(String... keysvalues); + + Long msetnx(String... keysvalues); + + String rename(String oldkey, String newkey); + + Long renamenx(String oldkey, String newkey); + + String rpoplpush(String srckey, String dstkey); + + Set sdiff(String... keys); + + Long sdiffstore(String dstkey, String... keys); + + Set sinter(String... keys); + + Long sinterstore(String dstkey, String... keys); + + Long smove(String srckey, String dstkey, String member); + + Long sort(String key, SortingParams sortingParameters, String dstkey); + + Long sort(String key, String dstkey); + + Set sunion(String... keys); + + Long sunionstore(String dstkey, String... keys); + + String watch(String... keys); + + Long zinterstore(String dstkey, String... sets); + + Long zinterstore(String dstkey, ZParams params, String... sets); + + Long zunionstore(String dstkey, String... sets); + + Long zunionstore(String dstkey, ZParams params, String... sets); + + String brpoplpush(String source, String destination, int timeout); + + Long publish(String channel, String message); + + String randomKey(); +} diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index b14adac..6df9157 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -43,6 +43,11 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { return j.get(key); } + public String echo(String string) { + Jedis j = getShard(string); + return j.echo(string); + } + public Boolean exists(String key) { Jedis j = getShard(key); return j.exists(key); @@ -103,6 +108,16 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { return j.setex(key, seconds, value); } + public List blpop(String arg) { + Jedis j = getShard(arg); + return j.blpop(arg); + } + + public List brpop(String arg) { + Jedis j = getShard(arg); + return j.brpop(arg); + } + public Long decrBy(String key, long integer) { Jedis j = getShard(key); return j.decrBy(key, integer); @@ -218,6 +233,11 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { return j.strlen(key); } + public Long move(String key, int dbIndex) { + Jedis j = getShard(key); + return j.move(key, dbIndex); + } + public Long rpushx(String key, String string) { Jedis j = getShard(key); return j.rpushx(key, string); From 429e45081ec2d509b01a204e997f3872372630af Mon Sep 17 00:00:00 2001 From: samhendley Date: Tue, 25 Dec 2012 09:21:44 -0500 Subject: [PATCH 10/23] removed functions in Jedis that overrode BinaryJedis versions --- .../java/redis/clients/jedis/BinaryJedis.java | 4 + src/main/java/redis/clients/jedis/Jedis.java | 98 ------------------- 2 files changed, 4 insertions(+), 98 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 5403e70..fd537d3 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -2070,12 +2070,16 @@ public class BinaryJedis implements BinaryJedisCommands { } public Long publish(final String channel, final String message) { + checkIsInMulti(); + connect(); client.publish(channel, message); return client.getIntegerReply(); } public void psubscribe(final JedisPubSub jedisPubSub, final String... patterns) { + checkIsInMulti(); + connect(); client.setTimeoutInfinite(); jedisPubSub.proceedWithPatterns(client, patterns); client.rollbackTimeout(); diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 16b03f6..8c91669 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -34,12 +34,6 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand super(uri); } - public String ping() { - checkIsInMulti(); - client.ping(); - return client.getStatusCodeReply(); - } - /** * Set the string value as value of the key. The string can't be longer than * 1073741824 bytes (1 GB). @@ -72,16 +66,6 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return client.getBulkReply(); } - /** - * Ask the server to silently close the connection. - */ - - public String quit() { - checkIsInMulti(); - client.quit(); - return client.getStatusCodeReply(); - } - /** * Test if the specified key exists. The command returns "1" if the key * exists, otherwise "0" is returned. Note that even keys set with an empty @@ -139,19 +123,6 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return client.getStatusCodeReply(); } - /** - * Delete all the keys of the currently selected DB. This command never - * fails. - * - * @return Status code reply - */ - - public String flushDB() { - checkIsInMulti(); - client.flushDB(); - return client.getStatusCodeReply(); - } - /** * Returns all the keys matching the glob-style pattern as space separated * strings. For example if you have in the database the keys "foo" and @@ -325,20 +296,6 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return client.getIntegerReply(); } - /** - * Select the DB with having the specified zero-based numeric index. For - * default every new client connection is automatically selected to DB 0. - * - * @param index - * @return Status code reply - */ - - public String select(final int index) { - checkIsInMulti(); - client.select(index); - return client.getStatusCodeReply(); - } - /** * Move the specified key from the currently selected DB to the specified * destination DB. Note that this command returns 1 only if the key was @@ -358,19 +315,6 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return client.getIntegerReply(); } - /** - * Delete all the keys of all the existing databases, not just the currently - * selected one. This command never fails. - * - * @return Status code reply - */ - - public String flushAll() { - checkIsInMulti(); - client.flushAll(); - return client.getStatusCodeReply(); - } - /** * GETSET is an atomic set this value and return the old value command. Set * key to the string value and return the old value stored at key. The @@ -1988,49 +1932,7 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return multiBulkReply; } - /** - * Request for authentication in a password protected Redis server. A Redis - * server can be instructed to require a password before to allow clients to - * issue commands. This is done using the requirepass directive in the Redis - * configuration file. If the password given by the client is correct the - * server replies with an OK status code reply and starts accepting commands - * from the client. Otherwise an error is returned and the clients needs to - * try a new password. Note that for the high performance nature of Redis it - * is possible to try a lot of passwords in parallel in very short time, so - * make sure to generate a strong and very long password so that this attack - * is infeasible. - * - * @param password - * @return Status code reply - */ - public String auth(final String password) { - checkIsInMulti(); - client.auth(password); - return client.getStatusCodeReply(); - } - - public void subscribe(JedisPubSub jedisPubSub, String... channels) { - checkIsInMulti(); - connect(); - client.setTimeoutInfinite(); - jedisPubSub.proceed(client, channels); - client.rollbackTimeout(); - } - - public Long publish(String channel, String message) { - checkIsInMulti(); - client.publish(channel, message); - return client.getIntegerReply(); - } - - public void psubscribe(JedisPubSub jedisPubSub, String... patterns) { - checkIsInMulti(); - connect(); - client.setTimeoutInfinite(); - jedisPubSub.proceedWithPatterns(client, patterns); - client.rollbackTimeout(); - } public Long zcount(final String key, final double min, final double max) { checkIsInMulti(); From 2006d80ac595bf909a86496d9f40fbe342e7faa1 Mon Sep 17 00:00:00 2001 From: samhendley Date: Tue, 25 Dec 2012 16:00:43 -0500 Subject: [PATCH 11/23] normalized BinaryJedisCommands to match JedisCommands (including setbit) --- .../redis/clients/jedis/BinaryClient.java | 4 + .../java/redis/clients/jedis/BinaryJedis.java | 65 ++++++++--- .../clients/jedis/BinaryJedisCommands.java | 104 +++++++++++------- .../clients/jedis/BinaryShardedJedis.java | 54 +++++++-- src/main/java/redis/clients/jedis/Client.java | 6 +- .../java/redis/clients/jedis/Commands.java | 2 + src/main/java/redis/clients/jedis/Jedis.java | 5 + .../redis/clients/jedis/JedisCommands.java | 2 + .../java/redis/clients/jedis/Protocol.java | 4 + .../redis/clients/jedis/ShardedJedis.java | 5 + 10 files changed, 182 insertions(+), 69 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index a5323d2..e87ca29 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -715,6 +715,10 @@ public class BinaryClient extends Connection { sendCommand(SETBIT, key, toByteArray(offset), value); } + public void setbit(byte[] key, long offset, boolean value) { + sendCommand(SETBIT, key, toByteArray(offset), toByteArray(value)); + } + public void getbit(byte[] key, long offset) { sendCommand(GETBIT, key, toByteArray(offset)); } diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index fd537d3..16c90f1 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -135,6 +135,12 @@ public class BinaryJedis implements BinaryJedisCommands { return client.getIntegerReply(); } + public Long del(final byte[] key) { + checkIsInMulti(); + client.del(key); + return client.getIntegerReply(); + } + /** * Return the type of the value stored at key in form of a string. The type * can be one of "none", "string", "list", "set". "none" is returned if the @@ -989,7 +995,7 @@ public class BinaryJedis implements BinaryJedisCommands { * @return Multi bulk reply, specifically a list of elements in the * specified range. */ - public List lrange(final byte[] key, final int start, final int end) { + public List lrange(final byte[] key, final long start, final long end) { checkIsInMulti(); client.lrange(key, start, end); return client.getBinaryMultiBulkReply(); @@ -1029,7 +1035,7 @@ public class BinaryJedis implements BinaryJedisCommands { * @param end * @return Status code reply */ - public String ltrim(final byte[] key, final int start, final int end) { + public String ltrim(final byte[] key, final long start, final long end) { checkIsInMulti(); client.ltrim(key, start, end); return client.getStatusCodeReply(); @@ -1053,7 +1059,7 @@ public class BinaryJedis implements BinaryJedisCommands { * @param index * @return Bulk reply, specifically the requested element */ - public byte[] lindex(final byte[] key, final int index) { + public byte[] lindex(final byte[] key, final long index) { checkIsInMulti(); client.lindex(key, index); return client.getBinaryBulkReply(); @@ -1080,7 +1086,7 @@ public class BinaryJedis implements BinaryJedisCommands { * @param value * @return Status code reply */ - public String lset(final byte[] key, final int index, final byte[] value) { + public String lset(final byte[] key, final long index, final byte[] value) { checkIsInMulti(); client.lset(key, index, value); return client.getStatusCodeReply(); @@ -1105,7 +1111,7 @@ public class BinaryJedis implements BinaryJedisCommands { * @return Integer Reply, specifically: The number of removed elements if * the operation succeeded */ - public Long lrem(final byte[] key, final int count, final byte[] value) { + public Long lrem(final byte[] key, final long count, final byte[] value) { checkIsInMulti(); client.lrem(key, count, value); return client.getIntegerReply(); @@ -1485,7 +1491,7 @@ public class BinaryJedis implements BinaryJedisCommands { return client.getIntegerReply(); } - public Set zrange(final byte[] key, final int start, final int end) { + public Set zrange(final byte[] key, final long start, final long end) { checkIsInMulti(); client.zrange(key, start, end); final List members = client.getBinaryMultiBulkReply(); @@ -1597,24 +1603,24 @@ public class BinaryJedis implements BinaryJedisCommands { return client.getIntegerReply(); } - public Set zrevrange(final byte[] key, final int start, - final int end) { + public Set zrevrange(final byte[] key, final long start, + final long end) { checkIsInMulti(); client.zrevrange(key, start, end); final List members = client.getBinaryMultiBulkReply(); return new LinkedHashSet(members); } - public Set zrangeWithScores(final byte[] key, final int start, - final int end) { + public Set zrangeWithScores(final byte[] key, final long start, + final long end) { checkIsInMulti(); client.zrangeWithScores(key, start, end); Set set = getBinaryTupledSet(); return set; } - public Set zrevrangeWithScores(final byte[] key, final int start, - final int end) { + public Set zrevrangeWithScores(final byte[] key, final long start, + final long end) { checkIsInMulti(); client.zrevrangeWithScores(key, start, end); Set set = getBinaryTupledSet(); @@ -2020,6 +2026,28 @@ public class BinaryJedis implements BinaryJedisCommands { return multiBulkReply; } + public List blpop(byte[] arg) { + checkIsInMulti(); + byte[][] args = new byte[1][]; + args[0] = arg; + client.blpop(args); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getBinaryMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + + public List brpop(byte[] arg) { + checkIsInMulti(); + byte[][] args = new byte[1][]; + args[0] = arg; + client.brpop(args); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getBinaryMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + /** * Request for authentication in a password protected Redis server. A Redis * server can be instructed to require a password before to allow clients to @@ -2448,7 +2476,7 @@ public class BinaryJedis implements BinaryJedisCommands { * operation * */ - public Long zremrangeByRank(final byte[] key, final int start, final int end) { + public Long zremrangeByRank(final byte[] key, final long start, final long end) { checkIsInMulti(); client.zremrangeByRank(key, start, end); return client.getIntegerReply(); @@ -3026,11 +3054,16 @@ public class BinaryJedis implements BinaryJedisCommands { * @param value * @return */ - public Boolean setbit(byte[] key, long offset, byte[] value) { + public Boolean setbit(byte[] key, long offset, boolean value) { client.setbit(key, offset, value); return client.getIntegerReply() == 1; } + public Boolean setbit(byte[] key, long offset, byte[] value) { + client.setbit(key, offset, value); + return client.getIntegerReply() == 1; + } + /** * Returns the bit value at offset in the string value stored at key * @@ -3048,9 +3081,9 @@ public class BinaryJedis implements BinaryJedisCommands { return client.getIntegerReply(); } - public String getrange(byte[] key, long startOffset, long endOffset) { + public byte[] getrange(byte[] key, long startOffset, long endOffset) { client.getrange(key, startOffset, endOffset); - return client.getBulkReply(); + return client.getBinaryBulkReply(); } public Long publish(byte[] channel, byte[] message) { diff --git a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java index 77189f7..237d584 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java +++ b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java @@ -17,6 +17,8 @@ public interface BinaryJedisCommands { Boolean exists(byte[] key); + Long persist(byte[] key); + String type(byte[] key); Long expire(byte[] key, int seconds); @@ -25,6 +27,16 @@ public interface BinaryJedisCommands { Long ttl(byte[] key); + Boolean setbit(byte[] key, long offset, boolean value); + + Boolean setbit(byte[] key, long offset, byte[] value); + + Boolean getbit(byte[] key, long offset); + + Long setrange(byte[] key, long offset, byte[] value); + + byte[] getrange(byte[] key, long startOffset, long endOffset); + byte[] getSet(byte[] key, byte[] value); Long setnx(byte[] key, byte[] value); @@ -67,21 +79,21 @@ public interface BinaryJedisCommands { Map hgetAll(byte[] key); - Long rpush(byte[] key, byte[]... string); + Long rpush(byte[] key, byte[]... args); - Long lpush(byte[] key, byte[]... string); + Long lpush(byte[] key, byte[]... args); Long llen(byte[] key); - List lrange(byte[] key, int start, int end); + List lrange(byte[] key, long start, long end); - String ltrim(byte[] key, int start, int end); + String ltrim(byte[] key, long start, long end); - byte[] lindex(byte[] key, int index); + byte[] lindex(byte[] key, long index); - String lset(byte[] key, int index, byte[] value); + String lset(byte[] key, long index, byte[] value); - Long lrem(byte[] key, int count, byte[] value); + Long lrem(byte[] key, long count, byte[] value); byte[] lpop(byte[] key); @@ -101,11 +113,13 @@ public interface BinaryJedisCommands { byte[] srandmember(byte[] key); - Long zadd(byte[] key, double score, byte[] member); + Long strlen(byte[] key); + Long zadd(byte[] key, double score, byte[] member); + Long zadd(byte[] key, Map scoreMembers); - Set zrange(byte[] key, int start, int end); + Set zrange(byte[] key, long start, long end); Long zrem(byte[] key, byte[]... member); @@ -115,11 +129,11 @@ public interface BinaryJedisCommands { Long zrevrank(byte[] key, byte[] member); - Set zrevrange(byte[] key, int start, int end); + Set zrevrange(byte[] key, long start, long end); - Set zrangeWithScores(byte[] key, int start, int end); + Set zrangeWithScores(byte[] key, long start, long end); - Set zrevrangeWithScores(byte[] key, int start, int end); + Set zrevrangeWithScores(byte[] key, long start, long end); Long zcard(byte[] key); @@ -135,54 +149,62 @@ public interface BinaryJedisCommands { Set zrangeByScore(byte[] key, double min, double max); + Set zrevrangeByScore(byte[] key, double max, double min); + Set zrangeByScore(byte[] key, double min, double max, int offset, int count); - Set zrangeByScoreWithScores(byte[] key, double min, double max); - - Set zrangeByScoreWithScores(byte[] key, double min, double max, - int offset, int count); - - Set zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max); - - Set zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, - int offset, int count); - - Set zrevrangeByScore(byte[] key, double max, double min); - - Set zrevrangeByScore(byte[] key, double max, double min, - int offset, int count); - Set zrevrangeByScore(byte[] key, byte[] max, byte[] min); - Set zrevrangeByScore(byte[] key, byte[] max, byte[] min, - int offset, int count); + Set zrangeByScore(byte[] key, byte[] min, byte[] max, int offset, + int count); + + Set zrevrangeByScore(byte[] key, double max, double min, + int offset, int count); + + Set zrangeByScoreWithScores(byte[] key, double min, double max); Set zrevrangeByScoreWithScores(byte[] key, double max, double min); - Set zrevrangeByScoreWithScores(byte[] key, double max, double min, - int offset, int count); + Set zrangeByScoreWithScores(byte[] key, double min, double max, + int offset, int count); + + Set zrevrangeByScore(byte[] key, byte[] max, byte[] min, + int offset, int count); + Set zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max); + Set zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min); - Set zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min, - int offset, int count); + Set zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, + int offset, int count); - Long zremrangeByRank(byte[] key, int start, int end); + Set zrevrangeByScoreWithScores(byte[] key, double max, double min, + int offset, int count); + + Set zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min, + 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, LIST_POSITION where, byte[] pivot, byte[] value); + Long linsert(byte[] key, Client.LIST_POSITION where, byte[] pivot, + byte[] value); + + Long lpushx(byte[] key, byte[] arg); + + Long rpushx(byte[] key, byte[] arg); - Long objectRefcount(byte[] key); + List blpop(byte[] arg); - Long objectIdletime(byte[] key); + List brpop(byte[] arg); - byte[] objectEncoding(byte[] key); + Long del(byte[] key); - Long lpushx(byte[] key, byte[] string); + byte[] echo(byte[] arg); - Long rpushx(byte[] key, byte[] string); + Long move(byte[] key, int dbIndex); } diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index 68adb8d..9e9d72b 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -220,27 +220,27 @@ public class BinaryShardedJedis extends Sharded return j.llen(key); } - public List lrange(byte[] key, int start, int end) { + public List lrange(byte[] key, long start, long end) { Jedis j = getShard(key); return j.lrange(key, start, end); } - public String ltrim(byte[] key, int start, int end) { + public String ltrim(byte[] key, long start, long end) { Jedis j = getShard(key); return j.ltrim(key, start, end); } - public byte[] lindex(byte[] key, int index) { + public byte[] lindex(byte[] key, long index) { Jedis j = getShard(key); return j.lindex(key, index); } - public String lset(byte[] key, int index, byte[] value) { + public String lset(byte[] key, long index, byte[] value) { Jedis j = getShard(key); return j.lset(key, index, value); } - public Long lrem(byte[] key, int count, byte[] value) { + public Long lrem(byte[] key, long count, byte[] value) { Jedis j = getShard(key); return j.lrem(key, count, value); } @@ -300,7 +300,7 @@ public class BinaryShardedJedis extends Sharded return j.zadd(key, scoreMembers); } - public Set zrange(byte[] key, int start, int end) { + public Set zrange(byte[] key, long start, long end) { Jedis j = getShard(key); return j.zrange(key, start, end); } @@ -325,17 +325,17 @@ public class BinaryShardedJedis extends Sharded return j.zrevrank(key, member); } - public Set zrevrange(byte[] key, int start, int end) { + public Set zrevrange(byte[] key, long start, long end) { Jedis j = getShard(key); return j.zrevrange(key, start, end); } - public Set zrangeWithScores(byte[] key, int start, int end) { + public Set zrangeWithScores(byte[] key, long start, long end) { Jedis j = getShard(key); return j.zrangeWithScores(key, start, end); } - public Set zrevrangeWithScores(byte[] key, int start, int end) { + public Set zrevrangeWithScores(byte[] key, long start, long end) { Jedis j = getShard(key); return j.zrevrangeWithScores(key, start, end); } @@ -404,6 +404,11 @@ public class BinaryShardedJedis extends Sharded return j.zrangeByScoreWithScores(key, min, max, offset, count); } + public Set zrangeByScore(byte[] key, byte[] min, byte[] max, int offset, int count) { + Jedis j = getShard(key); + return j.zrangeByScore(key, min, max, offset, count); + } + public Set zrevrangeByScore(byte[] key, double max, double min) { Jedis j = getShard(key); return j.zrevrangeByScore(key, max, min); @@ -450,7 +455,7 @@ public class BinaryShardedJedis extends Sharded return j.zrevrangeByScoreWithScores(key, max, min, offset, count); } - public Long zremrangeByRank(byte[] key, int start, int end) { + public Long zremrangeByRank(byte[] key, long start, long end) { Jedis j = getShard(key); return j.zremrangeByRank(key, start, end); } @@ -499,6 +504,11 @@ public class BinaryShardedJedis extends Sharded return j.objectIdletime(key); } + public Boolean setbit(byte[] key, long offset, boolean value) { + Jedis j = getShard(key); + return j.setbit(key, offset, value); + } + public Boolean setbit(byte[] key, long offset, byte[] value) { Jedis j = getShard(key); return j.setbit(key, offset, value); @@ -514,8 +524,30 @@ public class BinaryShardedJedis extends Sharded return j.setrange(key, offset, value); } - public String getrange(byte[] key, long startOffset, long endOffset) { + public byte[] getrange(byte[] key, long startOffset, long endOffset) { Jedis j = getShard(key); return j.getrange(key, startOffset, endOffset); } + + public Long move(byte[] key, int dbIndex) { + Jedis j = getShard(key); + return j.move(key, dbIndex); + } + + public byte[] echo(byte[] arg) { + Jedis j = getShard(arg); + return j.echo(arg); + } + + public List brpop(byte[] arg) { + Jedis j = getShard(arg); + return j.brpop(arg); + } + + public List blpop(byte[] arg) { + Jedis j = getShard(arg); + return j.blpop(arg); + } + + } \ No newline at end of file diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index 39aae12..dd1b12b 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -592,7 +592,11 @@ public class Client extends BinaryClient implements Commands { } public void setbit(final String key, final long offset, final boolean value) { - setbit(SafeEncoder.encode(key), offset, toByteArray(value ? 1 : 0)); + setbit(SafeEncoder.encode(key), offset, value); + } + + public void setbit(final String key, final long offset, final String value) { + setbit(SafeEncoder.encode(key), offset, SafeEncoder.encode(value)); } public void getbit(String key, long offset) { diff --git a/src/main/java/redis/clients/jedis/Commands.java b/src/main/java/redis/clients/jedis/Commands.java index 7881909..0023158 100644 --- a/src/main/java/redis/clients/jedis/Commands.java +++ b/src/main/java/redis/clients/jedis/Commands.java @@ -30,6 +30,8 @@ public interface Commands { public void setbit(String key, long offset, boolean value); + public void setbit(String key, long offset, String value); + public void getbit(String key, long offset); public void setrange(String key, long offset, String value); diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 8c91669..d61656e 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2605,6 +2605,11 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return client.getIntegerReply() == 1; } + public Boolean setbit(String key, long offset, String value) { + client.setbit(key, offset, value); + return client.getIntegerReply() == 1; + } + /** * Returns the bit value at offset in the string value stored at key * diff --git a/src/main/java/redis/clients/jedis/JedisCommands.java b/src/main/java/redis/clients/jedis/JedisCommands.java index 842e03f..54fdb77 100644 --- a/src/main/java/redis/clients/jedis/JedisCommands.java +++ b/src/main/java/redis/clients/jedis/JedisCommands.java @@ -26,6 +26,8 @@ public interface JedisCommands { Boolean setbit(String key, long offset, boolean value); + Boolean setbit(String key, long offset, String value); + Boolean getbit(String key, long offset); Long setrange(String key, long offset, String value); diff --git a/src/main/java/redis/clients/jedis/Protocol.java b/src/main/java/redis/clients/jedis/Protocol.java index b1e391d..e3126db 100644 --- a/src/main/java/redis/clients/jedis/Protocol.java +++ b/src/main/java/redis/clients/jedis/Protocol.java @@ -131,6 +131,10 @@ public final class Protocol { return process(is); } + public static final byte[] toByteArray(final boolean value) { + return toByteArray(value ? 1 : 0); + } + public static final byte[] toByteArray(final int value) { return SafeEncoder.encode(String.valueOf(value)); } diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index 6df9157..cb5b122 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -78,6 +78,11 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { return j.setbit(key, offset, value); } + public Boolean setbit(String key, long offset, String value) { + Jedis j = getShard(key); + return j.setbit(key, offset, value); + } + public Boolean getbit(String key, long offset) { Jedis j = getShard(key); return j.getbit(key, offset); From cc0ef89b7d5aa00769a8ed3d340b8eaf2fcf6167 Mon Sep 17 00:00:00 2001 From: samhendley Date: Wed, 26 Dec 2012 10:22:38 -0500 Subject: [PATCH 12/23] added binary version of MultiKey commands --- .../java/redis/clients/jedis/BinaryJedis.java | 20 +++++- .../clients/jedis/BinaryJedisCommands.java | 2 + .../clients/jedis/BinaryShardedJedis.java | 6 +- .../clients/jedis/MultiKeyBinaryCommands.java | 65 +++++++++++++++++++ 4 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 src/main/java/redis/clients/jedis/MultiKeyBinaryCommands.java diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 16c90f1..1b35263 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -17,7 +17,7 @@ import redis.clients.jedis.exceptions.JedisException; import redis.clients.util.JedisByteHashMap; import redis.clients.util.SafeEncoder; -public class BinaryJedis implements BinaryJedisCommands { +public class BinaryJedis implements BinaryJedisCommands, MultiKeyBinaryCommands { protected Client client = null; public BinaryJedis(final String host) { @@ -2048,6 +2048,24 @@ public class BinaryJedis implements BinaryJedisCommands { return multiBulkReply; } + public List blpop(byte[]... args) { + checkIsInMulti(); + client.blpop(args); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getBinaryMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + + public List brpop(byte[]... args) { + checkIsInMulti(); + client.brpop(args); + client.setTimeoutInfinite(); + final List multiBulkReply = client.getBinaryMultiBulkReply(); + client.rollbackTimeout(); + return multiBulkReply; + } + /** * Request for authentication in a password protected Redis server. A Redis * server can be instructed to require a password before to allow clients to diff --git a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java index 237d584..71b630e 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java +++ b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java @@ -149,6 +149,8 @@ public interface BinaryJedisCommands { Set zrangeByScore(byte[] key, double min, double max); + Set zrangeByScore(byte[] key, byte[] min, byte[] max); + Set zrevrangeByScore(byte[] key, double max, double min); Set zrangeByScore(byte[] key, double min, double max, int offset, diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index 9e9d72b..686af12 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -391,7 +391,11 @@ public class BinaryShardedJedis extends Sharded Jedis j = getShard(key); return j.zrangeByScoreWithScores(key, min, max, offset, count); } - + + public Set zrangeByScore(byte[] key, byte[] min, byte[] max) { + Jedis j = getShard(key); + return j.zrangeByScore(key, min, max); + } public Set zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max) { Jedis j = getShard(key); diff --git a/src/main/java/redis/clients/jedis/MultiKeyBinaryCommands.java b/src/main/java/redis/clients/jedis/MultiKeyBinaryCommands.java new file mode 100644 index 0000000..b115173 --- /dev/null +++ b/src/main/java/redis/clients/jedis/MultiKeyBinaryCommands.java @@ -0,0 +1,65 @@ +package redis.clients.jedis; + + +import java.util.List; +import java.util.Set; + +public interface MultiKeyBinaryCommands { + Long del(byte[]... keys); + + List blpop(int timeout, byte[]... keys); + + List brpop(int timeout, byte[]... keys); + + List blpop(byte[]... args); + + List brpop(byte[]... args); + + Set keys(byte[] pattern); + + List mget(byte[]... keys); + + String mset(byte[]... keysvalues); + + Long msetnx(byte[]... keysvalues); + + String rename(byte[] oldkey, byte[] newkey); + + Long renamenx(byte[] oldkey, byte[] newkey); + + byte[] rpoplpush(byte[] srckey, byte[] dstkey); + + Set sdiff(byte[]... keys); + + Long sdiffstore(byte[] dstkey, byte[]... keys); + + Set sinter(byte[]... keys); + + Long sinterstore(byte[] dstkey, byte[]... keys); + + Long smove(byte[] srckey, byte[] dstkey, byte[] member); + + Long sort(byte[] key, SortingParams sortingParameters, byte[] dstkey); + + Long sort(byte[] key, byte[] dstkey); + + Set sunion(byte[]... keys); + + Long sunionstore(byte[] dstkey, byte[]... keys); + + String watch(byte[]... keys); + + Long zinterstore(byte[] dstkey, byte[]... sets); + + Long zinterstore(byte[] dstkey, ZParams params, byte[]... sets); + + Long zunionstore(byte[] dstkey, byte[]... sets); + + Long zunionstore(byte[] dstkey, ZParams params, byte[]... sets); + + byte[] brpoplpush(byte[] source, byte[] destination, int timeout); + + Long publish(byte[] channel, byte[] message); + + byte[] randomBinaryKey(); +} From 5bde3da7f23a599669bafa7f23858fff342234f6 Mon Sep 17 00:00:00 2001 From: samhendley Date: Wed, 26 Dec 2012 11:45:57 -0500 Subject: [PATCH 13/23] added interfaces for ScriptingCommands, AdvancedCommands most of jedis and binaryjedis are defined by interfaces --- .../jedis/AdvancedBinaryJedisCommands.java | 25 +++++++ .../clients/jedis/AdvancedJedisCommands.java | 26 +++++++ .../redis/clients/jedis/BasicCommands.java | 40 ++++++++++ .../redis/clients/jedis/BinaryClient.java | 10 ++- .../java/redis/clients/jedis/BinaryJedis.java | 73 ++++++++++--------- .../jedis/BinaryScriptingCommands.java | 30 ++++++++ src/main/java/redis/clients/jedis/Jedis.java | 25 ++++++- .../clients/jedis/MultiKeyBinaryCommands.java | 6 ++ .../redis/clients/jedis/MultiKeyCommands.java | 6 ++ ...icCommands.java => ScriptingCommands.java} | 19 +---- 10 files changed, 207 insertions(+), 53 deletions(-) create mode 100644 src/main/java/redis/clients/jedis/AdvancedBinaryJedisCommands.java create mode 100644 src/main/java/redis/clients/jedis/AdvancedJedisCommands.java create mode 100644 src/main/java/redis/clients/jedis/BasicCommands.java create mode 100644 src/main/java/redis/clients/jedis/BinaryScriptingCommands.java rename src/main/java/redis/clients/jedis/{JedisBasicCommands.java => ScriptingCommands.java} (58%) diff --git a/src/main/java/redis/clients/jedis/AdvancedBinaryJedisCommands.java b/src/main/java/redis/clients/jedis/AdvancedBinaryJedisCommands.java new file mode 100644 index 0000000..51b4879 --- /dev/null +++ b/src/main/java/redis/clients/jedis/AdvancedBinaryJedisCommands.java @@ -0,0 +1,25 @@ +package redis.clients.jedis; + + +import java.util.List; + +public interface AdvancedBinaryJedisCommands { + + List configGet(byte[] pattern); + + byte[] configSet(byte[] parameter, byte[] value); + + String slowlogReset(); + + Long slowlogLen(); + + List slowlogGetBinary(); + + List slowlogGetBinary(long entries); + + Long objectRefcount(byte[] key); + + byte[] objectEncoding(byte[] key); + + Long objectIdletime(byte[] key); +} diff --git a/src/main/java/redis/clients/jedis/AdvancedJedisCommands.java b/src/main/java/redis/clients/jedis/AdvancedJedisCommands.java new file mode 100644 index 0000000..5ed50eb --- /dev/null +++ b/src/main/java/redis/clients/jedis/AdvancedJedisCommands.java @@ -0,0 +1,26 @@ +package redis.clients.jedis; + +import redis.clients.util.Slowlog; + +import java.util.List; + + +public interface AdvancedJedisCommands { + List configGet(String pattern); + + String configSet(String parameter, String value); + + String slowlogReset(); + + Long slowlogLen(); + + List slowlogGet(); + + List slowlogGet(long entries); + + Long objectRefcount(String string); + + String objectEncoding(String string); + + Long objectIdletime(String string); +} diff --git a/src/main/java/redis/clients/jedis/BasicCommands.java b/src/main/java/redis/clients/jedis/BasicCommands.java new file mode 100644 index 0000000..fa4ee2d --- /dev/null +++ b/src/main/java/redis/clients/jedis/BasicCommands.java @@ -0,0 +1,40 @@ +package redis.clients.jedis; + +public interface BasicCommands { + + String ping(); + + String quit(); + + String flushDB(); + + Long dbSize(); + + String select(int index); + + String flushAll(); + + String auth(String password); + + String save(); + + String bgsave(); + + String bgrewriteaof(); + + Long lastsave(); + + String shutdown(); + + String info(); + + String slaveof(String host, int port); + + String slaveofNoOne(); + + Long getDB(); + + String debug(DebugParams params); + + String configResetStat(); +} diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index e87ca29..778e97e 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -759,10 +759,18 @@ public class BinaryClient extends Connection { sendEvalCommand(EVAL, script, keyCount, params); } - public void evalsha(byte[] sha1, byte[] keyCount, byte[][] params) { + public void eval(byte[] script, int keyCount, byte[]... params) { + eval(script, toByteArray(keyCount), params); + } + + public void evalsha(byte[] sha1, byte[] keyCount, byte[]... params) { sendEvalCommand(EVALSHA, sha1, keyCount, params); } + public void evalsha(byte[] sha1, int keyCount, byte[]... params) { + sendEvalCommand(EVALSHA, sha1, toByteArray(keyCount), params); + } + public void scriptFlush() { sendCommand(SCRIPT, Keyword.FLUSH.raw); } diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 1b35263..d26043d 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -17,7 +17,7 @@ import redis.clients.jedis.exceptions.JedisException; import redis.clients.util.JedisByteHashMap; import redis.clients.util.SafeEncoder; -public class BinaryJedis implements BinaryJedisCommands, MultiKeyBinaryCommands { +public class BinaryJedis implements BasicCommands, BinaryJedisCommands, MultiKeyBinaryCommands, AdvancedBinaryJedisCommands, BinaryScriptingCommands { protected Client client = null; public BinaryJedis(final String host) { @@ -2108,29 +2108,6 @@ public class BinaryJedis implements BinaryJedisCommands, MultiKeyBinaryCommands return pipeline; } - public void subscribe(final JedisPubSub jedisPubSub, - final String... channels) { - client.setTimeoutInfinite(); - jedisPubSub.proceed(client, channels); - client.rollbackTimeout(); - } - - public Long publish(final String channel, final String message) { - checkIsInMulti(); - connect(); - client.publish(channel, message); - return client.getIntegerReply(); - } - - public void psubscribe(final JedisPubSub jedisPubSub, - final String... patterns) { - checkIsInMulti(); - connect(); - client.setTimeoutInfinite(); - jedisPubSub.proceedWithPatterns(client, patterns); - client.rollbackTimeout(); - } - public Long zcount(final byte[] key, final double min, final double max) { return zcount(key, toByteArray(min), toByteArray(max)); } @@ -3151,20 +3128,50 @@ public class BinaryJedis implements BinaryJedisCommands, MultiKeyBinaryCommands return params; } - public Object eval(byte[] script, byte[] keyCount, byte[][] params) { + public Object eval(byte[] script, byte[] keyCount, byte[]... params) { client.setTimeoutInfinite(); client.eval(script, keyCount, params); return client.getOne(); } - public byte[] scriptFlush() { + public Object eval(byte[] script, int keyCount, byte[]... params) { + client.setTimeoutInfinite(); + client.eval(script, SafeEncoder.encode(Integer.toString(keyCount)), params); + return client.getOne(); + } + + public Object eval(byte[] script) { + client.setTimeoutInfinite(); + client.eval(script, 0); + return client.getOne(); + } + + public Object evalsha(byte[] sha1) { + client.setTimeoutInfinite(); + client.evalsha(sha1, 0); + return client.getOne(); + } + + public Object evalsha(byte[] sha1, List keys, List args) { + client.setTimeoutInfinite(); + client.evalsha(sha1, keys.size(), keys.toArray(new byte[0][])); + return client.getOne(); + } + + public Object evalsha(byte[] sha1, int keyCount, byte[]... params) { + client.setTimeoutInfinite(); + client.evalsha(sha1, keyCount, params); + return client.getOne(); + } + + public String scriptFlush() { client.scriptFlush(); - return client.getBinaryBulkReply(); + return client.getStatusCodeReply(); } public List scriptExists(byte[]... sha1) { client.scriptExists(sha1); - return client.getIntegerMultiBulkReply(); + return client.getIntegerMultiBulkReply(); } public byte[] scriptLoad(byte[] script) { @@ -3172,17 +3179,17 @@ public class BinaryJedis implements BinaryJedisCommands, MultiKeyBinaryCommands return client.getBinaryBulkReply(); } - public byte[] scriptKill() { + public String scriptKill() { client.scriptKill(); - return client.getBinaryBulkReply(); + return client.getStatusCodeReply(); } - public byte[] slowlogReset() { + public String slowlogReset() { client.slowlogReset(); - return client.getBinaryBulkReply(); + return client.getBulkReply(); } - public long slowlogLen() { + public Long slowlogLen() { client.slowlogLen(); return client.getIntegerReply(); } diff --git a/src/main/java/redis/clients/jedis/BinaryScriptingCommands.java b/src/main/java/redis/clients/jedis/BinaryScriptingCommands.java new file mode 100644 index 0000000..092ce7a --- /dev/null +++ b/src/main/java/redis/clients/jedis/BinaryScriptingCommands.java @@ -0,0 +1,30 @@ +package redis.clients.jedis; + + +import java.util.List; + +public interface BinaryScriptingCommands { + + Object eval(byte[] script, byte[] keyCount, byte[]... params); + + Object eval(byte[] script, int keyCount, byte[]... params); + + Object eval(byte[] script, List keys, List args); + + Object eval(byte[] script); + + Object evalsha(byte[] script); + + Object evalsha(byte[] sha1, List keys, List args); + + Object evalsha(byte[] sha1, int keyCount, byte[]... params); + + // TODO: should be Boolean, add singular version + List scriptExists(byte[]... sha1); + + byte[] scriptLoad(byte[] script); + + String scriptFlush(); + + String scriptKill(); +} diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index d61656e..e2c2c72 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -13,7 +13,7 @@ import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.util.SafeEncoder; import redis.clients.util.Slowlog; -public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommands, JedisBasicCommands { +public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommands, AdvancedJedisCommands, ScriptingCommands { public Jedis(final String host) { super(host); } @@ -2719,6 +2719,29 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return getEvalResult(); } + public void subscribe(final JedisPubSub jedisPubSub, + final String... channels) { + client.setTimeoutInfinite(); + jedisPubSub.proceed(client, channels); + client.rollbackTimeout(); + } + + public Long publish(final String channel, final String message) { + checkIsInMulti(); + connect(); + client.publish(channel, message); + return client.getIntegerReply(); + } + + public void psubscribe(final JedisPubSub jedisPubSub, + final String... patterns) { + checkIsInMulti(); + connect(); + client.setTimeoutInfinite(); + jedisPubSub.proceedWithPatterns(client, patterns); + client.rollbackTimeout(); + } + private String[] getParams(List keys, List args) { int keyCount = keys.size(); int argCount = args.size(); diff --git a/src/main/java/redis/clients/jedis/MultiKeyBinaryCommands.java b/src/main/java/redis/clients/jedis/MultiKeyBinaryCommands.java index b115173..277b70e 100644 --- a/src/main/java/redis/clients/jedis/MultiKeyBinaryCommands.java +++ b/src/main/java/redis/clients/jedis/MultiKeyBinaryCommands.java @@ -49,6 +49,8 @@ public interface MultiKeyBinaryCommands { String watch(byte[]... keys); + String unwatch(); + Long zinterstore(byte[] dstkey, byte[]... sets); Long zinterstore(byte[] dstkey, ZParams params, byte[]... sets); @@ -61,5 +63,9 @@ public interface MultiKeyBinaryCommands { Long publish(byte[] channel, byte[] message); + void subscribe(BinaryJedisPubSub jedisPubSub, byte[]... channels); + + void psubscribe(BinaryJedisPubSub jedisPubSub, byte[]... patterns); + byte[] randomBinaryKey(); } diff --git a/src/main/java/redis/clients/jedis/MultiKeyCommands.java b/src/main/java/redis/clients/jedis/MultiKeyCommands.java index 8a333a9..d2386a6 100644 --- a/src/main/java/redis/clients/jedis/MultiKeyCommands.java +++ b/src/main/java/redis/clients/jedis/MultiKeyCommands.java @@ -49,6 +49,8 @@ public interface MultiKeyCommands { String watch(String... keys); + String unwatch(); + Long zinterstore(String dstkey, String... sets); Long zinterstore(String dstkey, ZParams params, String... sets); @@ -61,5 +63,9 @@ public interface MultiKeyCommands { Long publish(String channel, String message); + void subscribe(JedisPubSub jedisPubSub, String... channels); + + void psubscribe(JedisPubSub jedisPubSub, String... patterns); + String randomKey(); } diff --git a/src/main/java/redis/clients/jedis/JedisBasicCommands.java b/src/main/java/redis/clients/jedis/ScriptingCommands.java similarity index 58% rename from src/main/java/redis/clients/jedis/JedisBasicCommands.java rename to src/main/java/redis/clients/jedis/ScriptingCommands.java index 2f89586..ba693a4 100644 --- a/src/main/java/redis/clients/jedis/JedisBasicCommands.java +++ b/src/main/java/redis/clients/jedis/ScriptingCommands.java @@ -1,15 +1,8 @@ package redis.clients.jedis; -import redis.clients.util.Slowlog; - import java.util.List; - -public interface JedisBasicCommands { - List configGet(String pattern); - - String configSet(String parameter, String value); - +public interface ScriptingCommands { Object eval(String script, int keyCount, String... params); Object eval(String script, List keys, List args); @@ -27,14 +20,4 @@ public interface JedisBasicCommands { List scriptExists(String... sha1); String scriptLoad(String script); - - List slowlogGet(); - - List slowlogGet(long entries); - - Long objectRefcount(String string); - - String objectEncoding(String string); - - Long objectIdletime(String string); } From 7b7c6c9602f41b0b9f8a022aa16c6da9556cf64b Mon Sep 17 00:00:00 2001 From: samhendley Date: Wed, 26 Dec 2012 11:58:48 -0500 Subject: [PATCH 14/23] fixed up some missing pipelined methods --- .../redis/clients/jedis/BinaryRedisPipeline.java | 2 ++ .../redis/clients/jedis/BinaryShardedJedis.java | 9 +++++---- .../clients/jedis/MultiKeyBinaryRedisPipeline.java | 2 ++ .../java/redis/clients/jedis/RedisPipeline.java | 2 ++ .../java/redis/clients/jedis/ShardedJedis.java | 7 ------- .../redis/clients/jedis/ShardedJedisPipeline.java | 14 ++++++++++++++ 6 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java index 959f915..af57473 100644 --- a/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java +++ b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java @@ -85,6 +85,8 @@ public interface BinaryRedisPipeline { Response ltrim(byte[] key, long start, long end); + Response move(byte[] key, int dbIndex); + Response persist(byte[] key); Response rpop(byte[] key); diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index 686af12..e8a5dc5 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -30,10 +30,11 @@ public class BinaryShardedJedis extends Sharded super(shards, algo, keyTagPattern); } - public void disconnect() throws IOException { - for (Jedis jedis : getAllShards()) { - jedis.disconnect(); - } + public void disconnect() { + for (Jedis jedis : getAllShards()) { + jedis.quit(); + jedis.disconnect(); + } } protected Jedis create(JedisShardInfo shard) { diff --git a/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java index 12e2368..1413774 100644 --- a/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java +++ b/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java @@ -60,4 +60,6 @@ public interface MultiKeyBinaryRedisPipeline { Response brpoplpush(byte[] source, byte[] destination, int timeout); Response publish(byte[] channel, byte[] message); + + Response randomKeyBinary(); } diff --git a/src/main/java/redis/clients/jedis/RedisPipeline.java b/src/main/java/redis/clients/jedis/RedisPipeline.java index 570e620..3d79393 100644 --- a/src/main/java/redis/clients/jedis/RedisPipeline.java +++ b/src/main/java/redis/clients/jedis/RedisPipeline.java @@ -88,6 +88,8 @@ public interface RedisPipeline { Response ltrim(String key, long start, long end); + Response move(String key, int dbIndex); + Response persist(String key); Response rpop(String key); diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index cb5b122..142e754 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -26,13 +26,6 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { super(shards, algo, keyTagPattern); } - public void disconnect() { - for (Jedis jedis : getAllShards()) { - jedis.quit(); - jedis.disconnect(); - } - } - public String set(String key, String value) { Jedis j = getShard(key); return j.set(key, value); diff --git a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java index 771cdc9..8725bf3 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java +++ b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java @@ -91,6 +91,20 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_LIST); } + public Response move(byte[] key, int dbIndex) { + Client c = getClient(key); + c.move(key, dbIndex); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + + public Response move(String key, int dbIndex) { + Client c = getClient(key); + c.move(key, dbIndex); + results.add(new FutureResult(c)); + return getResponse(BuilderFactory.LONG); + } + public Response echo(byte[] string) { Client c = getClient(string); c.echo(string); From 1a967694817594e0c43f5ce6095eeec01f52e9e3 Mon Sep 17 00:00:00 2001 From: samhendley Date: Wed, 9 Jan 2013 22:52:38 -0500 Subject: [PATCH 15/23] updated scripting test to be more tolerant of changing error messages (changed since 2.6.0) --- .../clients/jedis/tests/commands/ScriptingCommandsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java index acee2cf..ed59799 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java @@ -132,7 +132,7 @@ public class ScriptingCommandsTest extends JedisCommandTestBase { jedis.scriptKill(); } catch(JedisDataException e) { - assertEquals("ERR No scripts in execution right now.", e.getMessage()); + assertTrue(e.getMessage().contains("No scripts in execution right now.")); } } } \ No newline at end of file From 4f9ddb3b5f1da4c4f60b0c07ba0f39e1c5ba8c6e Mon Sep 17 00:00:00 2001 From: samhendley Date: Thu, 10 Jan 2013 00:50:19 -0500 Subject: [PATCH 16/23] fixed many pipeline requests that were returning the wrong types --- .../clients/jedis/BasicRedisPipeline.java | 6 -- .../clients/jedis/BinaryRedisPipeline.java | 30 +++---- .../jedis/MultiKeyBinaryRedisPipeline.java | 4 +- .../java/redis/clients/jedis/Pipeline.java | 84 +++++++++---------- .../redis/clients/jedis/RedisPipeline.java | 2 +- .../clients/jedis/ShardedJedisPipeline.java | 64 +++++++------- 6 files changed, 92 insertions(+), 98 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BasicRedisPipeline.java b/src/main/java/redis/clients/jedis/BasicRedisPipeline.java index 0b4ac36..97658d8 100644 --- a/src/main/java/redis/clients/jedis/BasicRedisPipeline.java +++ b/src/main/java/redis/clients/jedis/BasicRedisPipeline.java @@ -22,12 +22,6 @@ public interface BasicRedisPipeline { Response lastsave(); - Response discard(); - - Response> exec(); - - Response multi(); - Response flushDB(); Response flushAll(); diff --git a/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java index 3722351..5c04491 100644 --- a/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java +++ b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java @@ -111,18 +111,18 @@ public interface BinaryRedisPipeline { Response setrange(String key, long offset, String value); - Response> smembers(byte[] key); + Response> smembers(byte[] key); Response sismember(byte[] key, byte[] member); - Response sort(byte[] key); + Response> sort(byte[] key); - Response> sort(byte[] key, + Response> sort(byte[] key, SortingParams sortingParameters); - Response spop(byte[] key); + Response spop(byte[] key); - Response srandmember(byte[] key); + Response srandmember(byte[] key); Response srem(byte[] key, byte[] member); @@ -142,18 +142,18 @@ public interface BinaryRedisPipeline { Response zincrby(byte[] key, double score, byte[] member); - Response> zrange(byte[] key, int start, int end); + Response> zrange(byte[] key, int start, int end); - Response> zrangeByScore(byte[] key, double min, + Response> zrangeByScore(byte[] key, double min, double max); - Response> zrangeByScore(byte[] key, byte[] min, + Response> zrangeByScore(byte[] key, byte[] min, byte[] max); - Response> zrangeByScore(byte[] key, double min, + Response> zrangeByScore(byte[] key, double min, double max, int offset, int count); - Response> zrangeByScore(byte[] key, byte[] min, + Response> zrangeByScore(byte[] key, byte[] min, byte[] max, int offset, int count); Response> zrangeByScoreWithScores(byte[] key, double min, @@ -168,16 +168,16 @@ public interface BinaryRedisPipeline { Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, int offset, int count); - Response> zrevrangeByScore(byte[] key, double max, + Response> zrevrangeByScore(byte[] key, double max, double min); - Response> zrevrangeByScore(byte[] key, byte[] max, + Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min); - Response> zrevrangeByScore(byte[] key, double max, + Response> zrevrangeByScore(byte[] key, double max, double min, int offset, int count); - Response> zrevrangeByScore(byte[] key, byte[] max, + Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min, int offset, int count); Response> zrevrangeByScoreWithScores(byte[] key, @@ -204,7 +204,7 @@ public interface BinaryRedisPipeline { Response zremrangeByScore(byte[] key, byte[] start, byte[] end); - Response> zrevrange(byte[] key, int start, int end); + Response> zrevrange(byte[] key, int start, int end); Response> zrevrangeWithScores(byte[] key, int start, int end); diff --git a/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java index 74f0e3d..85d004b 100644 --- a/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java +++ b/src/main/java/redis/clients/jedis/MultiKeyBinaryRedisPipeline.java @@ -23,7 +23,7 @@ public interface MultiKeyBinaryRedisPipeline { Response msetnx(byte[]... keysvalues); - Response rename(byte[] oldkey, byte[] newkey); + Response rename(byte[] oldkey, byte[] newkey); Response renamenx(byte[] oldkey, byte[] newkey); @@ -43,7 +43,7 @@ public interface MultiKeyBinaryRedisPipeline { Response> sort(byte[] key, byte[] dstkey); - Response> sunion(byte[]... keys); + Response> sunion(byte[]... keys); Response sunionstore(byte[] dstkey, byte[]... keys); diff --git a/src/main/java/redis/clients/jedis/Pipeline.java b/src/main/java/redis/clients/jedis/Pipeline.java index afd98f5..d605f25 100755 --- a/src/main/java/redis/clients/jedis/Pipeline.java +++ b/src/main/java/redis/clients/jedis/Pipeline.java @@ -586,9 +586,9 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING); } - public Response rename(byte[] oldkey, byte[] newkey) { + public Response rename(byte[] oldkey, byte[] newkey) { client.rename(oldkey, newkey); - return getResponse(BuilderFactory.BYTE_ARRAY); + return getResponse(BuilderFactory.STRING); } public Response renamenx(String oldkey, String newkey) { @@ -766,9 +766,9 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_SET); } - public Response> smembers(byte[] key) { + public Response> smembers(byte[] key) { client.smembers(key); - return getResponse(BuilderFactory.STRING_SET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response smove(String srckey, String dstkey, String member) { @@ -781,14 +781,14 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.LONG); } - public Response sort(String key) { + public Response> sort(String key) { client.sort(key); - return getResponse(BuilderFactory.LONG); + return getResponse(BuilderFactory.STRING_LIST); } - public Response sort(byte[] key) { + public Response> sort(byte[] key) { client.sort(key); - return getResponse(BuilderFactory.LONG); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response> sort(String key, @@ -797,10 +797,10 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_LIST); } - public Response> sort(byte[] key, + public Response> sort(byte[] key, SortingParams sortingParameters) { client.sort(key, sortingParameters); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response> sort(String key, @@ -830,9 +830,9 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING); } - public Response spop(byte[] key) { + public Response spop(byte[] key) { client.spop(key); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response srandmember(String key) { @@ -840,9 +840,9 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING); } - public Response srandmember(byte[] key) { + public Response srandmember(byte[] key) { client.srandmember(key); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response srem(String key, String member) { @@ -880,9 +880,9 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_SET); } - public Response> sunion(byte[]... keys) { + public Response> sunion(byte[]... keys) { client.sunion(keys); - return getResponse(BuilderFactory.STRING_SET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response sunionstore(String dstkey, String... keys) { @@ -992,9 +992,9 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrange(byte[] key, int start, int end) { + public Response> zrange(byte[] key, int start, int end) { client.zrange(key, start, end); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeByScore(String key, double min, @@ -1003,7 +1003,7 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrangeByScore(byte[] key, double min, + public Response> zrangeByScore(byte[] key, double min, double max) { return zrangeByScore(key, toByteArray(min), toByteArray(max)); } @@ -1014,10 +1014,10 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrangeByScore(byte[] key, byte[] min, + public Response> zrangeByScore(byte[] key, byte[] min, byte[] max) { client.zrangeByScore(key, min, max); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeByScore(String key, double min, @@ -1026,15 +1026,15 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrangeByScore(byte[] key, double min, + public Response> zrangeByScore(byte[] key, double min, double max, int offset, int count) { return zrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); } - public Response> zrangeByScore(byte[] key, byte[] min, + public Response> zrangeByScore(byte[] key, byte[] min, byte[] max, int offset, int count) { client.zrangeByScore(key, min, max, offset, count); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeByScoreWithScores(String key, double min, @@ -1051,7 +1051,7 @@ public class Pipeline extends Queable implements public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max) { client.zrangeByScoreWithScores(key, min, max); - return getResponse(BuilderFactory.TUPLE_ZSET); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrangeByScoreWithScores(String key, double min, @@ -1063,13 +1063,13 @@ public class Pipeline extends Queable implements public Response> zrangeByScoreWithScores(byte[] key, double min, double max, int offset, int count) { client.zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, int offset, int count) { client.zrangeByScoreWithScores(key, min, max, offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrevrangeByScore(String key, double max, @@ -1078,10 +1078,10 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrevrangeByScore(byte[] key, double max, + public Response> zrevrangeByScore(byte[] key, double max, double min) { client.zrevrangeByScore(key, toByteArray(max), toByteArray(min)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeByScore(String key, String max, @@ -1090,10 +1090,10 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrevrangeByScore(byte[] key, byte[] max, + public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min) { client.zrevrangeByScore(key, max, min); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeByScore(String key, double max, @@ -1102,16 +1102,16 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrevrangeByScore(byte[] key, double max, + public Response> zrevrangeByScore(byte[] key, double max, double min, int offset, int count) { client.zrevrangeByScore(key, toByteArray(max), toByteArray(min), offset, count); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } - public Response> zrevrangeByScore(byte[] key, byte[] max, + public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min, int offset, int count) { client.zrevrangeByScore(key, max, min, offset, count); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeByScoreWithScores(String key, @@ -1123,13 +1123,13 @@ public class Pipeline extends Queable implements public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min) { client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min)); - return getResponse(BuilderFactory.TUPLE_ZSET); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min) { client.zrevrangeByScoreWithScores(key, max, min); - return getResponse(BuilderFactory.TUPLE_ZSET); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrevrangeByScoreWithScores(String key, @@ -1141,13 +1141,13 @@ public class Pipeline extends Queable implements public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min, int offset, int count) { client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min), offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min, int offset, int count) { client.zrevrangeByScoreWithScores(key, max, min, offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrangeWithScores(String key, int start, int end) { @@ -1157,7 +1157,7 @@ public class Pipeline extends Queable implements public Response> zrangeWithScores(byte[] key, int start, int end) { client.zrangeWithScores(key, start, end); - return getResponse(BuilderFactory.TUPLE_ZSET); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response zrank(String key, String member) { @@ -1210,9 +1210,9 @@ public class Pipeline extends Queable implements return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrevrange(byte[] key, int start, int end) { + public Response> zrevrange(byte[] key, int start, int end) { client.zrevrange(key, start, end); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeWithScores(String key, int start, diff --git a/src/main/java/redis/clients/jedis/RedisPipeline.java b/src/main/java/redis/clients/jedis/RedisPipeline.java index 8d42aa2..b1c8461 100644 --- a/src/main/java/redis/clients/jedis/RedisPipeline.java +++ b/src/main/java/redis/clients/jedis/RedisPipeline.java @@ -116,7 +116,7 @@ public interface RedisPipeline { Response> smembers(String key); - Response sort(String key); + Response> sort(String key); Response> sort(String key, SortingParams sortingParameters); diff --git a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java index 1234b44..2601f9c 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java +++ b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java @@ -700,11 +700,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_SET); } - public Response> smembers(byte[] key) { + public Response> smembers(byte[] key) { Client c = getClient(key); c.smembers(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_SET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response srem(String key, String member) { @@ -742,11 +742,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING); } - public Response spop(byte[] key) { + public Response spop(byte[] key) { Client c = getClient(key); c.spop(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response scard(String key) { @@ -784,11 +784,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING); } - public Response srandmember(byte[] key) { + public Response srandmember(byte[] key) { Client c = getClient(key); c.srandmember(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); + return getResponse(BuilderFactory.BYTE_ARRAY); } public Response zadd(String key, double score, String member) { @@ -812,11 +812,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrange(byte[] key, int start, int end) { + public Response> zrange(byte[] key, int start, int end) { Client c = getClient(key); c.zrange(key, start, end); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response zrem(String key, String member) { @@ -882,11 +882,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrevrange(byte[] key, int start, int end) { + public Response> zrevrange(byte[] key, int start, int end) { Client c = getClient(key); c.zrevrange(key, start, end); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeWithScores(String key, int start, int end) { @@ -945,18 +945,18 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.DOUBLE); } - public Response sort(String key) { + public Response> sort(String key) { Client c = getClient(key); c.sort(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); + return getResponse(BuilderFactory.STRING_LIST); } - public Response sort(byte[] key) { + public Response> sort(byte[] key) { Client c = getClient(key); c.sort(key); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response> sort(String key, SortingParams sortingParameters) { @@ -966,11 +966,11 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_LIST); } - public Response> sort(byte[] key, SortingParams sortingParameters) { + public Response> sort(byte[] key, SortingParams sortingParameters) { Client c = getClient(key); c.sort(key, sortingParameters); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response zcount(String key, double min, double max) { @@ -1001,18 +1001,18 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrevrangeByScore(byte[] key, double max, double min) { + public Response> zrevrangeByScore(byte[] key, double max, double min) { Client c = getClient(key); c.zrevrangeByScore(key, toByteArray(min), toByteArray(max)); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } - public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min) { + public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min) { Client c = getClient(key); c.zrevrangeByScore(key, min, max); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeByScore(String key, double max, double min, int offset, int count) { @@ -1022,18 +1022,18 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrevrangeByScore(byte[] key, double max, double min, int offset, int count) { + public Response> zrevrangeByScore(byte[] key, double max, double min, int offset, int count) { Client c = getClient(key); c.zrevrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } - public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min, int offset, int count) { + public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min, int offset, int count) { Client c = getClient(key); c.zrevrangeByScore(key, min, max, offset, count); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeByScore(String key, String min, String max) { @@ -1050,18 +1050,18 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrangeByScore(byte[] key, double min, double max) { + public Response> zrangeByScore(byte[] key, double min, double max) { Client c = getClient(key); c.zrangeByScore(key, toByteArray(min), toByteArray(max)); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } - public Response> zrangeByScore(byte[] key, byte[] min, byte[] max) { + public Response> zrangeByScore(byte[] key, byte[] min, byte[] max) { Client c = getClient(key); c.zrangeByScore(key, min, max); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeByScore(String key, double min, double max, @@ -1072,20 +1072,20 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline return getResponse(BuilderFactory.STRING_ZSET); } - public Response> zrangeByScore(byte[] key, double min, double max, + public Response> zrangeByScore(byte[] key, double min, double max, int offset, int count) { Client c = getClient(key); c.zrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } - public Response> zrangeByScore(byte[] key, byte[] min, byte[] max, + public Response> zrangeByScore(byte[] key, byte[] min, byte[] max, int offset, int count) { Client c = getClient(key); c.zrangeByScore(key, min, max, offset, count); results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeByScoreWithScores(String key, double min, double max) { From c8ddd237c3d86920e4fb16ceef0fa0204ef7197c Mon Sep 17 00:00:00 2001 From: samhendley Date: Thu, 10 Jan 2013 01:16:54 -0500 Subject: [PATCH 17/23] extracted common Pipeline operations into PipelineBase and used that to simplify BinaryTransaction/Transaction --- .../clients/jedis/BinaryTransaction.java | 675 --------- .../java/redis/clients/jedis/Pipeline.java | 1321 +--------------- .../redis/clients/jedis/PipelineBase.java | 1322 +++++++++++++++++ .../java/redis/clients/jedis/Transaction.java | 622 +------- .../commands/TransactionCommandsTest.java | 2 +- 5 files changed, 1382 insertions(+), 2560 deletions(-) delete mode 100644 src/main/java/redis/clients/jedis/BinaryTransaction.java create mode 100644 src/main/java/redis/clients/jedis/PipelineBase.java diff --git a/src/main/java/redis/clients/jedis/BinaryTransaction.java b/src/main/java/redis/clients/jedis/BinaryTransaction.java deleted file mode 100644 index 96bdf2b..0000000 --- a/src/main/java/redis/clients/jedis/BinaryTransaction.java +++ /dev/null @@ -1,675 +0,0 @@ -package redis.clients.jedis; - -import static redis.clients.jedis.Protocol.toByteArray; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import redis.clients.jedis.BinaryClient.LIST_POSITION; -import redis.clients.jedis.exceptions.JedisDataException; - -public class BinaryTransaction extends Queable { - protected Client client = null; - protected boolean inTransaction = true; - - public BinaryTransaction() { - } - - public BinaryTransaction(final Client client) { - this.client = client; - } - - public List exec() { - client.exec(); - client.getAll(1); // Discard all but the last reply - - List unformatted = client.getObjectMultiBulkReply(); - if (unformatted == null) { - return null; - } - List formatted = new ArrayList(); - for (Object o : unformatted) { - try{ - formatted.add(generateResponse(o).get()); - }catch(JedisDataException e){ - formatted.add(e); - } - } - return formatted; - } - - public List> execGetResponse() { - client.exec(); - client.getAll(1); // Discard all but the last reply - - List unformatted = client.getObjectMultiBulkReply(); - if (unformatted == null) { - return null; - } - List> response = new ArrayList>(); - for (Object o : unformatted) { - response.add(generateResponse(o)); - } - return response; - } - - public String discard() { - client.discard(); - client.getAll(1); // Discard all but the last reply - inTransaction = false; - clean(); - return client.getStatusCodeReply(); - } - - public Response append(byte[] key, byte[] value) { - client.append(key, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> blpop(byte[]... args) { - client.blpop(args); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> brpop(byte[]... args) { - client.brpop(args); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response decr(byte[] key) { - client.decr(key); - return getResponse(BuilderFactory.LONG); - } - - public Response decrBy(byte[] key, long integer) { - client.decrBy(key, integer); - return getResponse(BuilderFactory.LONG); - } - - public Response del(byte[]... keys) { - client.del(keys); - return getResponse(BuilderFactory.LONG); - } - - public Response echo(byte[] string) { - client.echo(string); - return getResponse(BuilderFactory.STRING); - } - - public Response exists(byte[] key) { - client.exists(key); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response expire(byte[] key, int seconds) { - client.expire(key, seconds); - return getResponse(BuilderFactory.LONG); - } - - public Response expireAt(byte[] key, long unixTime) { - client.expireAt(key, unixTime); - return getResponse(BuilderFactory.LONG); - } - - public Response get(byte[] key) { - client.get(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response getSet(byte[] key, byte[] value) { - client.getSet(key, value); - return getResponse(BuilderFactory.STRING); - } - - public Response hdel(byte[] key, byte[] field) { - client.hdel(key, field); - return getResponse(BuilderFactory.LONG); - } - - public Response hexists(byte[] key, byte[] field) { - client.hexists(key, field); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response hget(byte[] key, byte[] field) { - client.hget(key, field); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response> hgetAll(byte[] key) { - client.hgetAll(key); - return getResponse(BuilderFactory.STRING_MAP); - } - - public Response hincrBy(byte[] key, byte[] field, long value) { - client.hincrBy(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> hkeys(byte[] key) { - client.hkeys(key); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response hlen(byte[] key) { - client.hlen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response> hmget(byte[] key, byte[]... fields) { - client.hmget(key, fields); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response hmset(byte[] key, Map hash) { - client.hmset(key, hash); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response hset(byte[] key, byte[] field, byte[] value) { - client.hset(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response hsetnx(byte[] key, byte[] field, byte[] value) { - client.hsetnx(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> hvals(byte[] key) { - client.hvals(key); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response incr(byte[] key) { - client.incr(key); - return getResponse(BuilderFactory.LONG); - } - - public Response incrBy(byte[] key, long integer) { - client.incrBy(key, integer); - return getResponse(BuilderFactory.LONG); - } - - public Response> keys(byte[] pattern) { - client.keys(pattern); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response lindex(byte[] key, long index) { - client.lindex(key, index); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response linsert(byte[] key, LIST_POSITION where, - byte[] pivot, byte[] value) { - client.linsert(key, where, pivot, value); - return getResponse(BuilderFactory.LONG); - } - - public Response llen(byte[] key) { - client.llen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response lpop(byte[] key) { - client.lpop(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response lpush(byte[] key, byte[] string) { - client.lpush(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response lpushx(byte[] key, byte[] bytes) { - client.lpushx(key, bytes); - return getResponse(BuilderFactory.LONG); - } - - public Response> lrange(byte[] key, long start, long end) { - client.lrange(key, start, end); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response lrem(byte[] key, long count, byte[] value) { - client.lrem(key, count, value); - return getResponse(BuilderFactory.LONG); - } - - public Response lset(byte[] key, long index, byte[] value) { - client.lset(key, index, value); - return getResponse(BuilderFactory.STRING); - } - - public Response ltrim(byte[] key, long start, long end) { - client.ltrim(key, start, end); - return getResponse(BuilderFactory.STRING); - } - - public Response> mget(byte[]... keys) { - client.mget(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response move(byte[] key, int dbIndex) { - client.move(key, dbIndex); - return getResponse(BuilderFactory.LONG); - } - - public Response mset(byte[]... keysvalues) { - client.mset(keysvalues); - return getResponse(BuilderFactory.STRING); - } - - public Response msetnx(byte[]... keysvalues) { - client.msetnx(keysvalues); - return getResponse(BuilderFactory.LONG); - } - - public Response persist(byte[] key) { - client.persist(key); - return getResponse(BuilderFactory.LONG); - } - - public Response rename(byte[] oldkey, byte[] newkey) { - client.rename(oldkey, newkey); - return getResponse(BuilderFactory.STRING); - } - - public Response renamenx(byte[] oldkey, byte[] newkey) { - client.renamenx(oldkey, newkey); - return getResponse(BuilderFactory.LONG); - } - - public Response rpop(byte[] key) { - client.rpop(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response rpoplpush(byte[] srckey, byte[] dstkey) { - client.rpoplpush(srckey, dstkey); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response rpush(byte[] key, byte[] string) { - client.rpush(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response rpushx(byte[] key, byte[] string) { - client.rpushx(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response sadd(byte[] key, byte[] member) { - client.sadd(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response scard(byte[] key) { - client.scard(key); - return getResponse(BuilderFactory.LONG); - } - - public Response> sdiff(byte[]... keys) { - client.sdiff(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response sdiffstore(byte[] dstkey, byte[]... keys) { - client.sdiffstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response set(byte[] key, byte[] value) { - client.set(key, value); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response setbit(String key, long offset, boolean value) { - client.setbit(key, offset, value); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response setex(byte[] key, int seconds, byte[] value) { - client.setex(key, seconds, value); - return getResponse(BuilderFactory.STRING); - } - - public Response setnx(byte[] key, byte[] value) { - client.setnx(key, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> sinter(byte[]... keys) { - client.sinter(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response sinterstore(byte[] dstkey, byte[]... keys) { - client.sinterstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response sismember(byte[] key, byte[] member) { - client.sismember(key, member); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response> smembers(byte[] key) { - client.smembers(key); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response smove(byte[] srckey, byte[] dstkey, byte[] member) { - client.smove(srckey, dstkey, member); - return getResponse(BuilderFactory.LONG); - } - - public Response> sort(byte[] key) { - client.sort(key); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> sort(byte[] key, - SortingParams sortingParameters) { - client.sort(key, sortingParameters); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> sort(byte[] key, - SortingParams sortingParameters, byte[] dstkey) { - client.sort(key, sortingParameters, dstkey); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> sort(byte[] key, byte[] dstkey) { - client.sort(key, dstkey); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response spop(byte[] key) { - client.spop(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response srandmember(byte[] key) { - client.srandmember(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response srem(byte[] key, byte[] member) { - client.srem(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response strlen(byte[] key) { - client.strlen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response substr(byte[] key, int start, int end) { // what's - // that? - client.substr(key, start, end); - return getResponse(BuilderFactory.STRING); - } - - public Response> sunion(byte[]... keys) { - client.sunion(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response sunionstore(byte[] dstkey, byte[]... keys) { - client.sunionstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response ttl(byte[] key) { - client.ttl(key); - return getResponse(BuilderFactory.LONG); - } - - public Response type(byte[] key) { - client.type(key); - return getResponse(BuilderFactory.STRING); - } - - public Response zadd(byte[] key, double score, byte[] member) { - client.zadd(key, score, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zcard(byte[] key) { - client.zcard(key); - return getResponse(BuilderFactory.LONG); - } - - public Response zcount(byte[] key, double min, double max) { - return zcount(key, toByteArray(min), toByteArray(max)); - } - - public Response zcount(byte[] key, byte[] min, byte[] max) { - client.zcount(key, min, max); - return getResponse(BuilderFactory.LONG); - } - - public Response zincrby(byte[] key, double score, byte[] member) { - client.zincrby(key, score, member); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zinterstore(byte[] dstkey, byte[]... sets) { - client.zinterstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zinterstore(byte[] dstkey, ZParams params, - byte[]... sets) { - client.zinterstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response> zrange(byte[] key, int start, int end) { - client.zrange(key, start, end); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScore(byte[] key, double min, - double max) { - return zrangeByScore(key, toByteArray(min), toByteArray(max)); - } - - public Response> zrangeByScore(byte[] key, byte[] min, - byte[] max) { - client.zrangeByScore(key, min, max); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScore(byte[] key, byte[] min, - byte[] max, int offset, int count) { - client.zrangeByScore(key, min, max, offset, count); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScore(byte[] key, double min, - double max, int offset, int count) { - return zrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); - } - - public Response> zrangeByScoreWithScores(byte[] key, double min, - double max) { - return zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max)); - } - - public Response> zrangeByScoreWithScores(byte[] key, double min, - double max, int offset, int count) { - return zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); - } - - public Response> zrangeByScoreWithScores(byte[] key, byte[] min, - byte[] max) { - client.zrangeByScoreWithScores(key, min, max); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response> zrangeByScoreWithScores(byte[] key, byte[] min, - byte[] max, int offset, int count) { - client.zrangeByScoreWithScores(key, min, max, offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response> zrangeWithScores(byte[] key, int start, int end) { - client.zrangeWithScores(key, start, end); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response zrank(byte[] key, byte[] member) { - client.zrank(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zrem(byte[] key, byte[] member) { - client.zrem(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByRank(byte[] key, int start, int end) { - client.zremrangeByRank(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByScore(byte[] key, double start, double end) { - return zremrangeByScore(key, toByteArray(start), toByteArray(end)); - } - - public Response zremrangeByScore(byte[] key, byte[] start, byte[] end) { - client.zremrangeByScore(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response> zrevrange(byte[] key, int start, int end) { - client.zrevrange(key, start, end); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrevrangeWithScores(byte[] key, int start, - int end) { - client.zrevrangeWithScores(key, start, end); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response zrevrank(byte[] key, byte[] member) { - client.zrevrank(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zscore(byte[] key, byte[] member) { - client.zscore(key, member); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zunionstore(byte[] dstkey, byte[]... sets) { - client.zunionstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zunionstore(byte[] dstkey, ZParams params, - byte[]... sets) { - client.zunionstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response brpoplpush(byte[] source, byte[] destination, - int timeout) { - client.brpoplpush(source, destination, timeout); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response select(final int index) { - client.select(index); - return getResponse(BuilderFactory.STRING); - } - - public Response flushDB() { - client.flushDB(); - return getResponse(BuilderFactory.STRING); - } - - public Response flushAll() { - client.flushAll(); - return getResponse(BuilderFactory.STRING); - } - - public Response save() { - client.save(); - return getResponse(BuilderFactory.STRING); - } - - public Response info() { - client.info(); - return getResponse(BuilderFactory.STRING); - } - - public Response lastsave() { - client.lastsave(); - return getResponse(BuilderFactory.LONG); - } - - public Response dbSize() { - client.dbSize(); - return getResponse(BuilderFactory.LONG); - } - - public Response> configGet(final byte[] pattern) { - client.configGet(pattern); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response configSet(final byte[] parameter, final byte[] value) { - client.configSet(parameter, value); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response configResetStat() { - client.configResetStat(); - return getResponse(BuilderFactory.STRING); - } - - public Response shutdown() { - client.shutdown(); - return getResponse(BuilderFactory.STRING); - } - - public Response getbit(final byte[] key, final long offset) { - client.getbit(key, offset); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response setbit(final byte[] key, final long offset, final byte[] value) { - client.setbit(key, offset, value); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response ping() { - client.ping(); - return getResponse(BuilderFactory.STRING); - } - - public Response setrange(byte[] key, long offset, byte[] value) { - client.setrange(key, offset, value); - return getResponse(BuilderFactory.LONG); - } - - public Response randomKey() { - client.randomKey(); - return getResponse(BuilderFactory.STRING); - } - - public Response publish(byte[] channel, byte[] message) { - client.publish(channel, message); - return getResponse(BuilderFactory.LONG); - } -} \ No newline at end of file diff --git a/src/main/java/redis/clients/jedis/Pipeline.java b/src/main/java/redis/clients/jedis/Pipeline.java index d605f25..cf61066 100755 --- a/src/main/java/redis/clients/jedis/Pipeline.java +++ b/src/main/java/redis/clients/jedis/Pipeline.java @@ -1,20 +1,11 @@ package redis.clients.jedis; -import static redis.clients.jedis.Protocol.toByteArray; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.jedis.exceptions.JedisDataException; -public class Pipeline extends Queable implements - BasicRedisPipeline, - BinaryRedisPipeline, - RedisPipeline, - MultiKeyBinaryRedisPipeline, - MultiKeyCommandsPipeline { +import java.util.ArrayList; +import java.util.List; + +public class Pipeline extends PipelineBase { private MultiResponseBuilder currentMulti; @@ -57,9 +48,7 @@ public class Pipeline extends Queable implements return super.getResponse(builder); } } - - private Client client; - + public void setClient(Client client) { this.client = client; } @@ -100,1222 +89,6 @@ public class Pipeline extends Queable implements return formatted; } - public Response append(String key, String value) { - client.append(key, value); - return getResponse(BuilderFactory.LONG); - } - - public Response append(byte[] key, byte[] value) { - client.append(key, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> blpop(String arg) { - String[] temp = new String[1]; - temp[0] = arg; - client.blpop(temp); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> brpop(String arg) { - String[] temp = new String[1]; - temp[0] = arg; - client.brpop(temp); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> blpop(byte[] arg) { - byte[][] temp = new byte[1][]; - temp[0] = arg; - client.blpop(temp); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> brpop(byte[] arg) { - byte[][] temp = new byte[1][]; - temp[0] = arg; - client.brpop(temp); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> blpop(String... args) { - client.blpop(args); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> blpop(byte[]... args) { - client.blpop(args); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> brpop(String... args) { - client.brpop(args); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> brpop(byte[]... args) { - client.brpop(args); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response decr(String key) { - client.decr(key); - return getResponse(BuilderFactory.LONG); - } - - public Response decr(byte[] key) { - client.decr(key); - return getResponse(BuilderFactory.LONG); - } - - public Response decrBy(String key, long integer) { - client.decrBy(key, integer); - return getResponse(BuilderFactory.LONG); - } - - public Response decrBy(byte[] key, long integer) { - client.decrBy(key, integer); - return getResponse(BuilderFactory.LONG); - } - - public Response del(String key) { - client.del(key); - return getResponse(BuilderFactory.LONG); - } - - public Response del(String... keys) { - client.del(keys); - return getResponse(BuilderFactory.LONG); - } - - public Response del(byte[] key) { - client.del(key); - return getResponse(BuilderFactory.LONG); - } - - public Response del(byte[]... keys) { - client.del(keys); - return getResponse(BuilderFactory.LONG); - } - - public Response echo(String string) { - client.echo(string); - return getResponse(BuilderFactory.STRING); - } - - public Response echo(byte[] string) { - client.echo(string); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response exists(String key) { - client.exists(key); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response exists(byte[] key) { - client.exists(key); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response expire(String key, int seconds) { - client.expire(key, seconds); - return getResponse(BuilderFactory.LONG); - } - - public Response expire(byte[] key, int seconds) { - client.expire(key, seconds); - return getResponse(BuilderFactory.LONG); - } - - public Response expireAt(String key, long unixTime) { - client.expireAt(key, unixTime); - return getResponse(BuilderFactory.LONG); - } - - public Response expireAt(byte[] key, long unixTime) { - client.expireAt(key, unixTime); - return getResponse(BuilderFactory.LONG); - } - - public Response get(String key) { - client.get(key); - return getResponse(BuilderFactory.STRING); - } - - public Response get(byte[] key) { - client.get(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response getbit(String key, long offset) { - client.getbit(key, offset); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response getbit(byte[] key, long offset) { - client.getbit(key, offset); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response getrange(String key, long startOffset, - long endOffset) { - client.getrange(key, startOffset, endOffset); - return getResponse(BuilderFactory.STRING); - } - - public Response getSet(String key, String value) { - client.getSet(key, value); - return getResponse(BuilderFactory.STRING); - } - - public Response getSet(byte[] key, byte[] value) { - client.getSet(key, value); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response getrange(byte[] key, long startOffset, long endOffset) { - client.getrange(key, startOffset, endOffset); - return getResponse(BuilderFactory.LONG); - } - - public Response hdel(String key, String field) { - client.hdel(key, field); - return getResponse(BuilderFactory.LONG); - } - - public Response hdel(byte[] key, byte[] field) { - client.hdel(key, field); - return getResponse(BuilderFactory.LONG); - } - - public Response hexists(String key, String field) { - client.hexists(key, field); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response hexists(byte[] key, byte[] field) { - client.hexists(key, field); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response hget(String key, String field) { - client.hget(key, field); - return getResponse(BuilderFactory.STRING); - } - - public Response hget(byte[] key, byte[] field) { - client.hget(key, field); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response> hgetAll(String key) { - client.hgetAll(key); - return getResponse(BuilderFactory.STRING_MAP); - } - - public Response> hgetAll(byte[] key) { - client.hgetAll(key); - return getResponse(BuilderFactory.BYTE_ARRAY_MAP); - } - - public Response hincrBy(String key, String field, long value) { - client.hincrBy(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response hincrBy(byte[] key, byte[] field, long value) { - client.hincrBy(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> hkeys(String key) { - client.hkeys(key); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> hkeys(byte[] key) { - client.hkeys(key); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response hlen(String key) { - client.hlen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response hlen(byte[] key) { - client.hlen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response> hmget(String key, String... fields) { - client.hmget(key, fields); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> hmget(byte[] key, byte[]... fields) { - client.hmget(key, fields); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response hmset(String key, Map hash) { - client.hmset(key, hash); - return getResponse(BuilderFactory.STRING); - } - - public Response hmset(byte[] key, Map hash) { - client.hmset(key, hash); - return getResponse(BuilderFactory.STRING); - } - - public Response hset(String key, String field, String value) { - client.hset(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response hset(byte[] key, byte[] field, byte[] value) { - client.hset(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response hsetnx(String key, String field, String value) { - client.hsetnx(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response hsetnx(byte[] key, byte[] field, byte[] value) { - client.hsetnx(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> hvals(String key) { - client.hvals(key); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> hvals(byte[] key) { - client.hvals(key); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response incr(String key) { - client.incr(key); - return getResponse(BuilderFactory.LONG); - } - - public Response incr(byte[] key) { - client.incr(key); - return getResponse(BuilderFactory.LONG); - } - - public Response incrBy(String key, long integer) { - client.incrBy(key, integer); - return getResponse(BuilderFactory.LONG); - } - - public Response incrBy(byte[] key, long integer) { - client.incrBy(key, integer); - return getResponse(BuilderFactory.LONG); - } - - public Response> keys(String pattern) { - client.keys(pattern); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> keys(byte[] pattern) { - client.keys(pattern); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response lindex(String key, int index) { - client.lindex(key, index); - return getResponse(BuilderFactory.STRING); - } - - public Response lindex(byte[] key, int index) { - client.lindex(key, index); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response linsert(String key, LIST_POSITION where, - String pivot, String value) { - client.linsert(key, where, pivot, value); - return getResponse(BuilderFactory.LONG); - } - - public Response linsert(byte[] key, LIST_POSITION where, - byte[] pivot, byte[] value) { - client.linsert(key, where, pivot, value); - return getResponse(BuilderFactory.LONG); - } - - public Response llen(String key) { - client.llen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response llen(byte[] key) { - client.llen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response lpop(String key) { - client.lpop(key); - return getResponse(BuilderFactory.STRING); - } - - public Response lpop(byte[] key) { - client.lpop(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response lpush(String key, String string) { - client.lpush(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response lpush(byte[] key, byte[] string) { - client.lpush(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response lpushx(String key, String string) { - client.lpushx(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response lpushx(byte[] key, byte[] bytes) { - client.lpushx(key, bytes); - return getResponse(BuilderFactory.LONG); - } - - public Response> lrange(String key, long start, long end) { - client.lrange(key, start, end); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> lrange(byte[] key, long start, long end) { - client.lrange(key, start, end); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response lrem(String key, long count, String value) { - client.lrem(key, count, value); - return getResponse(BuilderFactory.LONG); - } - - public Response lrem(byte[] key, long count, byte[] value) { - client.lrem(key, count, value); - return getResponse(BuilderFactory.LONG); - } - - public Response lset(String key, long index, String value) { - client.lset(key, index, value); - return getResponse(BuilderFactory.STRING); - } - - public Response lset(byte[] key, long index, byte[] value) { - client.lset(key, index, value); - return getResponse(BuilderFactory.STRING); - } - - public Response ltrim(String key, long start, long end) { - client.ltrim(key, start, end); - return getResponse(BuilderFactory.STRING); - } - - public Response ltrim(byte[] key, long start, long end) { - client.ltrim(key, start, end); - return getResponse(BuilderFactory.STRING); - } - - public Response> mget(String... keys) { - client.mget(keys); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> mget(byte[]... keys) { - client.mget(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response move(String key, int dbIndex) { - client.move(key, dbIndex); - return getResponse(BuilderFactory.LONG); - } - - public Response move(byte[] key, int dbIndex) { - client.move(key, dbIndex); - return getResponse(BuilderFactory.LONG); - } - - public Response mset(String... keysvalues) { - client.mset(keysvalues); - return getResponse(BuilderFactory.STRING); - } - - public Response mset(byte[]... keysvalues) { - client.mset(keysvalues); - return getResponse(BuilderFactory.STRING); - } - - public Response msetnx(String... keysvalues) { - client.msetnx(keysvalues); - return getResponse(BuilderFactory.LONG); - } - - public Response msetnx(byte[]... keysvalues) { - client.msetnx(keysvalues); - return getResponse(BuilderFactory.LONG); - } - - public Response persist(String key) { - client.persist(key); - return getResponse(BuilderFactory.LONG); - } - - public Response persist(byte[] key) { - client.persist(key); - return getResponse(BuilderFactory.LONG); - } - - public Response rename(String oldkey, String newkey) { - client.rename(oldkey, newkey); - return getResponse(BuilderFactory.STRING); - } - - public Response rename(byte[] oldkey, byte[] newkey) { - client.rename(oldkey, newkey); - return getResponse(BuilderFactory.STRING); - } - - public Response renamenx(String oldkey, String newkey) { - client.renamenx(oldkey, newkey); - return getResponse(BuilderFactory.LONG); - } - - public Response renamenx(byte[] oldkey, byte[] newkey) { - client.renamenx(oldkey, newkey); - return getResponse(BuilderFactory.LONG); - } - - public Response rpop(String key) { - client.rpop(key); - return getResponse(BuilderFactory.STRING); - } - - public Response rpop(byte[] key) { - client.rpop(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response rpoplpush(String srckey, String dstkey) { - client.rpoplpush(srckey, dstkey); - return getResponse(BuilderFactory.STRING); - } - - public Response rpoplpush(byte[] srckey, byte[] dstkey) { - client.rpoplpush(srckey, dstkey); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response rpush(String key, String string) { - client.rpush(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response rpush(byte[] key, byte[] string) { - client.rpush(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response rpushx(String key, String string) { - client.rpushx(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response rpushx(byte[] key, byte[] string) { - client.rpushx(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response sadd(String key, String member) { - client.sadd(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response sadd(byte[] key, byte[] member) { - client.sadd(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response scard(String key) { - client.scard(key); - return getResponse(BuilderFactory.LONG); - } - - public Response scard(byte[] key) { - client.scard(key); - return getResponse(BuilderFactory.LONG); - } - - public Response> sdiff(String... keys) { - client.sdiff(keys); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> sdiff(byte[]... keys) { - client.sdiff(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response sdiffstore(String dstkey, String... keys) { - client.sdiffstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response sdiffstore(byte[] dstkey, byte[]... keys) { - client.sdiffstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response set(String key, String value) { - client.set(key, value); - return getResponse(BuilderFactory.STRING); - } - - public Response set(byte[] key, byte[] value) { - client.set(key, value); - return getResponse(BuilderFactory.STRING); - } - - public Response setbit(String key, long offset, boolean value) { - client.setbit(key, offset, value); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response setbit(byte[] key, long offset, byte[] value) { - client.setbit(key, offset, value); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response setex(String key, int seconds, String value) { - client.setex(key, seconds, value); - return getResponse(BuilderFactory.STRING); - } - - public Response setex(byte[] key, int seconds, byte[] value) { - client.setex(key, seconds, value); - return getResponse(BuilderFactory.STRING); - } - - public Response setnx(String key, String value) { - client.setnx(key, value); - return getResponse(BuilderFactory.LONG); - } - - public Response setnx(byte[] key, byte[] value) { - client.setnx(key, value); - return getResponse(BuilderFactory.LONG); - } - - public Response setrange(String key, long offset, String value) { - client.setrange(key, offset, value); - return getResponse(BuilderFactory.LONG); - } - - public Response setrange(byte[] key, long offset, byte[] value) { - client.setrange(key, offset, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> sinter(String... keys) { - client.sinter(keys); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> sinter(byte[]... keys) { - client.sinter(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response sinterstore(String dstkey, String... keys) { - client.sinterstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response sinterstore(byte[] dstkey, byte[]... keys) { - client.sinterstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response sismember(String key, String member) { - client.sismember(key, member); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response sismember(byte[] key, byte[] member) { - client.sismember(key, member); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response> smembers(String key) { - client.smembers(key); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> smembers(byte[] key) { - client.smembers(key); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response smove(String srckey, String dstkey, String member) { - client.smove(srckey, dstkey, member); - return getResponse(BuilderFactory.LONG); - } - - public Response smove(byte[] srckey, byte[] dstkey, byte[] member) { - client.smove(srckey, dstkey, member); - return getResponse(BuilderFactory.LONG); - } - - public Response> sort(String key) { - client.sort(key); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(byte[] key) { - client.sort(key); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> sort(String key, - SortingParams sortingParameters) { - client.sort(key, sortingParameters); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(byte[] key, - SortingParams sortingParameters) { - client.sort(key, sortingParameters); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> sort(String key, - SortingParams sortingParameters, String dstkey) { - client.sort(key, sortingParameters, dstkey); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(byte[] key, - SortingParams sortingParameters, byte[] dstkey) { - client.sort(key, sortingParameters, dstkey); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> sort(String key, String dstkey) { - client.sort(key, dstkey); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(byte[] key, byte[] dstkey) { - client.sort(key, dstkey); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response spop(String key) { - client.spop(key); - return getResponse(BuilderFactory.STRING); - } - - public Response spop(byte[] key) { - client.spop(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response srandmember(String key) { - client.srandmember(key); - return getResponse(BuilderFactory.STRING); - } - - public Response srandmember(byte[] key) { - client.srandmember(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response srem(String key, String member) { - client.srem(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response srem(byte[] key, byte[] member) { - client.srem(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response strlen(String key) { - client.strlen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response strlen(byte[] key) { - client.strlen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response substr(String key, int start, int end) { - client.substr(key, start, end); - return getResponse(BuilderFactory.STRING); - } - - public Response substr(byte[] key, int start, int end) { - client.substr(key, start, end); - return getResponse(BuilderFactory.STRING); - } - - public Response> sunion(String... keys) { - client.sunion(keys); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> sunion(byte[]... keys) { - client.sunion(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response sunionstore(String dstkey, String... keys) { - client.sunionstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response sunionstore(byte[] dstkey, byte[]... keys) { - client.sunionstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response ttl(String key) { - client.ttl(key); - return getResponse(BuilderFactory.LONG); - } - - public Response ttl(byte[] key) { - client.ttl(key); - return getResponse(BuilderFactory.LONG); - } - - public Response type(String key) { - client.type(key); - return getResponse(BuilderFactory.STRING); - } - - public Response type(byte[] key) { - client.type(key); - return getResponse(BuilderFactory.STRING); - } - - public Response watch(String... keys) { - client.watch(keys); - return getResponse(BuilderFactory.STRING); - } - - public Response watch(byte[]... keys) { - client.watch(keys); - return getResponse(BuilderFactory.STRING); - } - - public Response zadd(String key, double score, String member) { - client.zadd(key, score, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zadd(byte[] key, double score, byte[] member) { - client.zadd(key, score, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zcard(String key) { - client.zcard(key); - return getResponse(BuilderFactory.LONG); - } - - public Response zcard(byte[] key) { - client.zcard(key); - return getResponse(BuilderFactory.LONG); - } - - public Response zcount(String key, double min, double max) { - client.zcount(key, min, max); - return getResponse(BuilderFactory.LONG); - } - - public Response zcount(byte[] key, double min, double max) { - client.zcount(key, toByteArray(min), toByteArray(max)); - return getResponse(BuilderFactory.LONG); - } - - public Response zincrby(String key, double score, String member) { - client.zincrby(key, score, member); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zincrby(byte[] key, double score, byte[] member) { - client.zincrby(key, score, member); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zinterstore(String dstkey, String... sets) { - client.zinterstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zinterstore(byte[] dstkey, byte[]... sets) { - client.zinterstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zinterstore(String dstkey, ZParams params, - String... sets) { - client.zinterstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zinterstore(byte[] dstkey, ZParams params, - byte[]... sets) { - client.zinterstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response> zrange(String key, int start, int end) { - client.zrange(key, start, end); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrange(byte[] key, int start, int end) { - client.zrange(key, start, end); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScore(String key, double min, - double max) { - client.zrangeByScore(key, min, max); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScore(byte[] key, double min, - double max) { - return zrangeByScore(key, toByteArray(min), toByteArray(max)); - } - - public Response> zrangeByScore(String key, String min, - String max) { - client.zrangeByScore(key, min, max); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScore(byte[] key, byte[] min, - byte[] max) { - client.zrangeByScore(key, min, max); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScore(String key, double min, - double max, int offset, int count) { - client.zrangeByScore(key, min, max, offset, count); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScore(byte[] key, double min, - double max, int offset, int count) { - return zrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); - } - - public Response> zrangeByScore(byte[] key, byte[] min, - byte[] max, int offset, int count) { - client.zrangeByScore(key, min, max, offset, count); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScoreWithScores(String key, double min, - double max) { - client.zrangeByScoreWithScores(key, min, max); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeByScoreWithScores(byte[] key, double min, - double max) { - return zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max)); - } - - public Response> zrangeByScoreWithScores(byte[] key, byte[] min, - byte[] max) { - client.zrangeByScoreWithScores(key, min, max); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response> zrangeByScoreWithScores(String key, double min, - double max, int offset, int count) { - client.zrangeByScoreWithScores(key, min, max, offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeByScoreWithScores(byte[] key, double min, - double max, int offset, int count) { - client.zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response> zrangeByScoreWithScores(byte[] key, byte[] min, - byte[] max, int offset, int count) { - client.zrangeByScoreWithScores(key, min, max, offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response> zrevrangeByScore(String key, double max, - double min) { - client.zrevrangeByScore(key, max, min); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrevrangeByScore(byte[] key, double max, - double min) { - client.zrevrangeByScore(key, toByteArray(max), toByteArray(min)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrevrangeByScore(String key, String max, - String min) { - client.zrevrangeByScore(key, max, min); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrevrangeByScore(byte[] key, byte[] max, - byte[] min) { - client.zrevrangeByScore(key, max, min); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrevrangeByScore(String key, double max, - double min, int offset, int count) { - client.zrevrangeByScore(key, max, min, offset, count); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrevrangeByScore(byte[] key, double max, - double min, int offset, int count) { - client.zrevrangeByScore(key, toByteArray(max), toByteArray(min), offset, count); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrevrangeByScore(byte[] key, byte[] max, - byte[] min, int offset, int count) { - client.zrevrangeByScore(key, max, min, offset, count); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrevrangeByScoreWithScores(String key, - double max, double min) { - client.zrevrangeByScoreWithScores(key, max, min); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeByScoreWithScores(byte[] key, - double max, double min) { - client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min)); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response> zrevrangeByScoreWithScores(byte[] key, - byte[] max, byte[] min) { - client.zrevrangeByScoreWithScores(key, max, min); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response> zrevrangeByScoreWithScores(String key, - double max, double min, int offset, int count) { - client.zrevrangeByScoreWithScores(key, max, min, offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeByScoreWithScores(byte[] key, - double max, double min, int offset, int count) { - client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min), offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response> zrevrangeByScoreWithScores(byte[] key, - byte[] max, byte[] min, int offset, int count) { - client.zrevrangeByScoreWithScores(key, max, min, offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response> zrangeWithScores(String key, int start, int end) { - client.zrangeWithScores(key, start, end); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeWithScores(byte[] key, int start, int end) { - client.zrangeWithScores(key, start, end); - return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); - } - - public Response zrank(String key, String member) { - client.zrank(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zrank(byte[] key, byte[] member) { - client.zrank(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zrem(String key, String member) { - client.zrem(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zrem(byte[] key, byte[] member) { - client.zrem(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByRank(String key, int start, int end) { - client.zremrangeByRank(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByRank(byte[] key, int start, int end) { - client.zremrangeByRank(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByScore(String key, double start, double end) { - client.zremrangeByScore(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByScore(byte[] key, double start, double end) { - client.zremrangeByScore(key, toByteArray(start), toByteArray(end)); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByScore(byte[] key, byte[] start, byte[] end) { - client.zremrangeByScore(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response> zrevrange(String key, int start, int end) { - client.zrevrange(key, start, end); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrevrange(byte[] key, int start, int end) { - client.zrevrange(key, start, end); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrevrangeWithScores(String key, int start, - int end) { - client.zrevrangeWithScores(key, start, end); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeWithScores(byte[] key, int start, - int end) { - client.zrevrangeWithScores(key, start, end); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response zrevrank(String key, String member) { - client.zrevrank(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zrevrank(byte[] key, byte[] member) { - client.zrevrank(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zscore(String key, String member) { - client.zscore(key, member); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zscore(byte[] key, byte[] member) { - client.zscore(key, member); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zunionstore(String dstkey, String... sets) { - client.zunionstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zunionstore(byte[] dstkey, byte[]... sets) { - client.zunionstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zunionstore(String dstkey, ZParams params, - String... sets) { - client.zunionstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zunionstore(byte[] dstkey, ZParams params, - byte[]... sets) { - client.zunionstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response bgrewriteaof() { - client.bgrewriteaof(); - return getResponse(BuilderFactory.STRING); - } - - public Response bgsave() { - client.bgsave(); - return getResponse(BuilderFactory.STRING); - } - - public Response configGet(String pattern) { - client.configGet(pattern); - return getResponse(BuilderFactory.STRING); - } - - public Response configSet(String parameter, String value) { - client.configSet(parameter, value); - return getResponse(BuilderFactory.STRING); - } - - public Response brpoplpush(String source, String destination, - int timeout) { - client.brpoplpush(source, destination, timeout); - return getResponse(BuilderFactory.STRING); - } - - public Response brpoplpush(byte[] source, byte[] destination, - int timeout) { - client.brpoplpush(source, destination, timeout); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response configResetStat() { - client.configResetStat(); - return getResponse(BuilderFactory.STRING); - } - - public Response save() { - client.save(); - return getResponse(BuilderFactory.STRING); - } - - public Response lastsave() { - client.lastsave(); - return getResponse(BuilderFactory.LONG); - } - public Response discard() { client.discard(); return getResponse(BuilderFactory.STRING); @@ -1335,88 +108,4 @@ public class Pipeline extends Queable implements return response; } - public Response publish(String channel, String message) { - client.publish(channel, message); - return getResponse(BuilderFactory.LONG); - } - - public Response publish(byte[] channel, byte[] message) { - client.publish(channel, message); - return getResponse(BuilderFactory.LONG); - } - - public Response randomKey() { - client.randomKey(); - return getResponse(BuilderFactory.STRING); - } - - public Response randomKeyBinary() { - client.randomKey(); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response flushDB() { - client.flushDB(); - return getResponse(BuilderFactory.STRING); - } - - public Response flushAll() { - client.flushAll(); - return getResponse(BuilderFactory.STRING); - } - - public Response info() { - client.info(); - return getResponse(BuilderFactory.STRING); - } - - public Response dbSize() { - client.dbSize(); - return getResponse(BuilderFactory.LONG); - } - - public Response shutdown() { - client.shutdown(); - return getResponse(BuilderFactory.STRING); - } - - public Response ping() { - client.ping(); - return getResponse(BuilderFactory.STRING); - } - - public Response select(int index){ - client.select(index); - return getResponse(BuilderFactory.STRING); - } - - public Response bitcount(String key) { - client.bitcount(key); - return getResponse(BuilderFactory.LONG); - } - - public Response bitcount(String key, long start, long end) { - client.bitcount(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response bitcount(byte[] key) { - client.bitcount(key); - return getResponse(BuilderFactory.LONG); - } - - public Response bitcount(byte[] key, long start, long end) { - client.bitcount(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response bitop(BitOP op, byte[] destKey, byte[]... srcKeys) { - client.bitop(op, destKey, srcKeys); - return getResponse(BuilderFactory.LONG); - } - - public Response bitop(BitOP op, String destKey, String... srcKeys) { - client.bitop(op, destKey, srcKeys); - return getResponse(BuilderFactory.LONG); - } } diff --git a/src/main/java/redis/clients/jedis/PipelineBase.java b/src/main/java/redis/clients/jedis/PipelineBase.java new file mode 100644 index 0000000..b8fdefd --- /dev/null +++ b/src/main/java/redis/clients/jedis/PipelineBase.java @@ -0,0 +1,1322 @@ +package redis.clients.jedis; + +import static redis.clients.jedis.Protocol.toByteArray; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import redis.clients.jedis.BinaryClient.LIST_POSITION; +import redis.clients.jedis.exceptions.JedisDataException; + +abstract class PipelineBase extends Queable implements + BasicRedisPipeline, + BinaryRedisPipeline, + RedisPipeline, + MultiKeyBinaryRedisPipeline, + MultiKeyCommandsPipeline { + + protected Client client; + + public Response append(String key, String value) { + client.append(key, value); + return getResponse(BuilderFactory.LONG); + } + + public Response append(byte[] key, byte[] value) { + client.append(key, value); + return getResponse(BuilderFactory.LONG); + } + + public Response> blpop(String arg) { + String[] temp = new String[1]; + temp[0] = arg; + client.blpop(temp); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> brpop(String arg) { + String[] temp = new String[1]; + temp[0] = arg; + client.brpop(temp); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> blpop(byte[] arg) { + byte[][] temp = new byte[1][]; + temp[0] = arg; + client.blpop(temp); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> brpop(byte[] arg) { + byte[][] temp = new byte[1][]; + temp[0] = arg; + client.brpop(temp); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> blpop(String... args) { + client.blpop(args); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> blpop(byte[]... args) { + client.blpop(args); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> brpop(String... args) { + client.brpop(args); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> brpop(byte[]... args) { + client.brpop(args); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response decr(String key) { + client.decr(key); + return getResponse(BuilderFactory.LONG); + } + + public Response decr(byte[] key) { + client.decr(key); + return getResponse(BuilderFactory.LONG); + } + + public Response decrBy(String key, long integer) { + client.decrBy(key, integer); + return getResponse(BuilderFactory.LONG); + } + + public Response decrBy(byte[] key, long integer) { + client.decrBy(key, integer); + return getResponse(BuilderFactory.LONG); + } + + public Response del(String key) { + client.del(key); + return getResponse(BuilderFactory.LONG); + } + + public Response del(String... keys) { + client.del(keys); + return getResponse(BuilderFactory.LONG); + } + + public Response del(byte[] key) { + client.del(key); + return getResponse(BuilderFactory.LONG); + } + + public Response del(byte[]... keys) { + client.del(keys); + return getResponse(BuilderFactory.LONG); + } + + public Response echo(String string) { + client.echo(string); + return getResponse(BuilderFactory.STRING); + } + + public Response echo(byte[] string) { + client.echo(string); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response exists(String key) { + client.exists(key); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response exists(byte[] key) { + client.exists(key); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response expire(String key, int seconds) { + client.expire(key, seconds); + return getResponse(BuilderFactory.LONG); + } + + public Response expire(byte[] key, int seconds) { + client.expire(key, seconds); + return getResponse(BuilderFactory.LONG); + } + + public Response expireAt(String key, long unixTime) { + client.expireAt(key, unixTime); + return getResponse(BuilderFactory.LONG); + } + + public Response expireAt(byte[] key, long unixTime) { + client.expireAt(key, unixTime); + return getResponse(BuilderFactory.LONG); + } + + public Response get(String key) { + client.get(key); + return getResponse(BuilderFactory.STRING); + } + + public Response get(byte[] key) { + client.get(key); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response getbit(String key, long offset) { + client.getbit(key, offset); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response getbit(byte[] key, long offset) { + client.getbit(key, offset); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response getrange(String key, long startOffset, + long endOffset) { + client.getrange(key, startOffset, endOffset); + return getResponse(BuilderFactory.STRING); + } + + public Response getSet(String key, String value) { + client.getSet(key, value); + return getResponse(BuilderFactory.STRING); + } + + public Response getSet(byte[] key, byte[] value) { + client.getSet(key, value); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response getrange(byte[] key, long startOffset, long endOffset) { + client.getrange(key, startOffset, endOffset); + return getResponse(BuilderFactory.LONG); + } + + public Response hdel(String key, String field) { + client.hdel(key, field); + return getResponse(BuilderFactory.LONG); + } + + public Response hdel(byte[] key, byte[] field) { + client.hdel(key, field); + return getResponse(BuilderFactory.LONG); + } + + public Response hexists(String key, String field) { + client.hexists(key, field); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response hexists(byte[] key, byte[] field) { + client.hexists(key, field); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response hget(String key, String field) { + client.hget(key, field); + return getResponse(BuilderFactory.STRING); + } + + public Response hget(byte[] key, byte[] field) { + client.hget(key, field); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response> hgetAll(String key) { + client.hgetAll(key); + return getResponse(BuilderFactory.STRING_MAP); + } + + public Response> hgetAll(byte[] key) { + client.hgetAll(key); + return getResponse(BuilderFactory.BYTE_ARRAY_MAP); + } + + public Response hincrBy(String key, String field, long value) { + client.hincrBy(key, field, value); + return getResponse(BuilderFactory.LONG); + } + + public Response hincrBy(byte[] key, byte[] field, long value) { + client.hincrBy(key, field, value); + return getResponse(BuilderFactory.LONG); + } + + public Response> hkeys(String key) { + client.hkeys(key); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> hkeys(byte[] key) { + client.hkeys(key); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response hlen(String key) { + client.hlen(key); + return getResponse(BuilderFactory.LONG); + } + + public Response hlen(byte[] key) { + client.hlen(key); + return getResponse(BuilderFactory.LONG); + } + + public Response> hmget(String key, String... fields) { + client.hmget(key, fields); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> hmget(byte[] key, byte[]... fields) { + client.hmget(key, fields); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response hmset(String key, Map hash) { + client.hmset(key, hash); + return getResponse(BuilderFactory.STRING); + } + + public Response hmset(byte[] key, Map hash) { + client.hmset(key, hash); + return getResponse(BuilderFactory.STRING); + } + + public Response hset(String key, String field, String value) { + client.hset(key, field, value); + return getResponse(BuilderFactory.LONG); + } + + public Response hset(byte[] key, byte[] field, byte[] value) { + client.hset(key, field, value); + return getResponse(BuilderFactory.LONG); + } + + public Response hsetnx(String key, String field, String value) { + client.hsetnx(key, field, value); + return getResponse(BuilderFactory.LONG); + } + + public Response hsetnx(byte[] key, byte[] field, byte[] value) { + client.hsetnx(key, field, value); + return getResponse(BuilderFactory.LONG); + } + + public Response> hvals(String key) { + client.hvals(key); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> hvals(byte[] key) { + client.hvals(key); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response incr(String key) { + client.incr(key); + return getResponse(BuilderFactory.LONG); + } + + public Response incr(byte[] key) { + client.incr(key); + return getResponse(BuilderFactory.LONG); + } + + public Response incrBy(String key, long integer) { + client.incrBy(key, integer); + return getResponse(BuilderFactory.LONG); + } + + public Response incrBy(byte[] key, long integer) { + client.incrBy(key, integer); + return getResponse(BuilderFactory.LONG); + } + + public Response> keys(String pattern) { + client.keys(pattern); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> keys(byte[] pattern) { + client.keys(pattern); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response lindex(String key, int index) { + client.lindex(key, index); + return getResponse(BuilderFactory.STRING); + } + + public Response lindex(byte[] key, int index) { + client.lindex(key, index); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response linsert(String key, LIST_POSITION where, + String pivot, String value) { + client.linsert(key, where, pivot, value); + return getResponse(BuilderFactory.LONG); + } + + public Response linsert(byte[] key, LIST_POSITION where, + byte[] pivot, byte[] value) { + client.linsert(key, where, pivot, value); + return getResponse(BuilderFactory.LONG); + } + + public Response llen(String key) { + client.llen(key); + return getResponse(BuilderFactory.LONG); + } + + public Response llen(byte[] key) { + client.llen(key); + return getResponse(BuilderFactory.LONG); + } + + public Response lpop(String key) { + client.lpop(key); + return getResponse(BuilderFactory.STRING); + } + + public Response lpop(byte[] key) { + client.lpop(key); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response lpush(String key, String string) { + client.lpush(key, string); + return getResponse(BuilderFactory.LONG); + } + + public Response lpush(byte[] key, byte[] string) { + client.lpush(key, string); + return getResponse(BuilderFactory.LONG); + } + + public Response lpushx(String key, String string) { + client.lpushx(key, string); + return getResponse(BuilderFactory.LONG); + } + + public Response lpushx(byte[] key, byte[] bytes) { + client.lpushx(key, bytes); + return getResponse(BuilderFactory.LONG); + } + + public Response> lrange(String key, long start, long end) { + client.lrange(key, start, end); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> lrange(byte[] key, long start, long end) { + client.lrange(key, start, end); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response lrem(String key, long count, String value) { + client.lrem(key, count, value); + return getResponse(BuilderFactory.LONG); + } + + public Response lrem(byte[] key, long count, byte[] value) { + client.lrem(key, count, value); + return getResponse(BuilderFactory.LONG); + } + + public Response lset(String key, long index, String value) { + client.lset(key, index, value); + return getResponse(BuilderFactory.STRING); + } + + public Response lset(byte[] key, long index, byte[] value) { + client.lset(key, index, value); + return getResponse(BuilderFactory.STRING); + } + + public Response ltrim(String key, long start, long end) { + client.ltrim(key, start, end); + return getResponse(BuilderFactory.STRING); + } + + public Response ltrim(byte[] key, long start, long end) { + client.ltrim(key, start, end); + return getResponse(BuilderFactory.STRING); + } + + public Response> mget(String... keys) { + client.mget(keys); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> mget(byte[]... keys) { + client.mget(keys); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response move(String key, int dbIndex) { + client.move(key, dbIndex); + return getResponse(BuilderFactory.LONG); + } + + public Response move(byte[] key, int dbIndex) { + client.move(key, dbIndex); + return getResponse(BuilderFactory.LONG); + } + + public Response mset(String... keysvalues) { + client.mset(keysvalues); + return getResponse(BuilderFactory.STRING); + } + + public Response mset(byte[]... keysvalues) { + client.mset(keysvalues); + return getResponse(BuilderFactory.STRING); + } + + public Response msetnx(String... keysvalues) { + client.msetnx(keysvalues); + return getResponse(BuilderFactory.LONG); + } + + public Response msetnx(byte[]... keysvalues) { + client.msetnx(keysvalues); + return getResponse(BuilderFactory.LONG); + } + + public Response persist(String key) { + client.persist(key); + return getResponse(BuilderFactory.LONG); + } + + public Response persist(byte[] key) { + client.persist(key); + return getResponse(BuilderFactory.LONG); + } + + public Response rename(String oldkey, String newkey) { + client.rename(oldkey, newkey); + return getResponse(BuilderFactory.STRING); + } + + public Response rename(byte[] oldkey, byte[] newkey) { + client.rename(oldkey, newkey); + return getResponse(BuilderFactory.STRING); + } + + public Response renamenx(String oldkey, String newkey) { + client.renamenx(oldkey, newkey); + return getResponse(BuilderFactory.LONG); + } + + public Response renamenx(byte[] oldkey, byte[] newkey) { + client.renamenx(oldkey, newkey); + return getResponse(BuilderFactory.LONG); + } + + public Response rpop(String key) { + client.rpop(key); + return getResponse(BuilderFactory.STRING); + } + + public Response rpop(byte[] key) { + client.rpop(key); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response rpoplpush(String srckey, String dstkey) { + client.rpoplpush(srckey, dstkey); + return getResponse(BuilderFactory.STRING); + } + + public Response rpoplpush(byte[] srckey, byte[] dstkey) { + client.rpoplpush(srckey, dstkey); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response rpush(String key, String string) { + client.rpush(key, string); + return getResponse(BuilderFactory.LONG); + } + + public Response rpush(byte[] key, byte[] string) { + client.rpush(key, string); + return getResponse(BuilderFactory.LONG); + } + + public Response rpushx(String key, String string) { + client.rpushx(key, string); + return getResponse(BuilderFactory.LONG); + } + + public Response rpushx(byte[] key, byte[] string) { + client.rpushx(key, string); + return getResponse(BuilderFactory.LONG); + } + + public Response sadd(String key, String member) { + client.sadd(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response sadd(byte[] key, byte[] member) { + client.sadd(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response scard(String key) { + client.scard(key); + return getResponse(BuilderFactory.LONG); + } + + public Response scard(byte[] key) { + client.scard(key); + return getResponse(BuilderFactory.LONG); + } + + public Response> sdiff(String... keys) { + client.sdiff(keys); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> sdiff(byte[]... keys) { + client.sdiff(keys); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response sdiffstore(String dstkey, String... keys) { + client.sdiffstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response sdiffstore(byte[] dstkey, byte[]... keys) { + client.sdiffstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response set(String key, String value) { + client.set(key, value); + return getResponse(BuilderFactory.STRING); + } + + public Response set(byte[] key, byte[] value) { + client.set(key, value); + return getResponse(BuilderFactory.STRING); + } + + public Response setbit(String key, long offset, boolean value) { + client.setbit(key, offset, value); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response setbit(byte[] key, long offset, byte[] value) { + client.setbit(key, offset, value); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response setex(String key, int seconds, String value) { + client.setex(key, seconds, value); + return getResponse(BuilderFactory.STRING); + } + + public Response setex(byte[] key, int seconds, byte[] value) { + client.setex(key, seconds, value); + return getResponse(BuilderFactory.STRING); + } + + public Response setnx(String key, String value) { + client.setnx(key, value); + return getResponse(BuilderFactory.LONG); + } + + public Response setnx(byte[] key, byte[] value) { + client.setnx(key, value); + return getResponse(BuilderFactory.LONG); + } + + public Response setrange(String key, long offset, String value) { + client.setrange(key, offset, value); + return getResponse(BuilderFactory.LONG); + } + + public Response setrange(byte[] key, long offset, byte[] value) { + client.setrange(key, offset, value); + return getResponse(BuilderFactory.LONG); + } + + public Response> sinter(String... keys) { + client.sinter(keys); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> sinter(byte[]... keys) { + client.sinter(keys); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response sinterstore(String dstkey, String... keys) { + client.sinterstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response sinterstore(byte[] dstkey, byte[]... keys) { + client.sinterstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response sismember(String key, String member) { + client.sismember(key, member); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response sismember(byte[] key, byte[] member) { + client.sismember(key, member); + return getResponse(BuilderFactory.BOOLEAN); + } + + public Response> smembers(String key) { + client.smembers(key); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> smembers(byte[] key) { + client.smembers(key); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response smove(String srckey, String dstkey, String member) { + client.smove(srckey, dstkey, member); + return getResponse(BuilderFactory.LONG); + } + + public Response smove(byte[] srckey, byte[] dstkey, byte[] member) { + client.smove(srckey, dstkey, member); + return getResponse(BuilderFactory.LONG); + } + + public Response> sort(String key) { + client.sort(key); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> sort(byte[] key) { + client.sort(key); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> sort(String key, + SortingParams sortingParameters) { + client.sort(key, sortingParameters); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> sort(byte[] key, + SortingParams sortingParameters) { + client.sort(key, sortingParameters); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> sort(String key, + SortingParams sortingParameters, String dstkey) { + client.sort(key, sortingParameters, dstkey); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> sort(byte[] key, + SortingParams sortingParameters, byte[] dstkey) { + client.sort(key, sortingParameters, dstkey); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> sort(String key, String dstkey) { + client.sort(key, dstkey); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> sort(byte[] key, byte[] dstkey) { + client.sort(key, dstkey); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response spop(String key) { + client.spop(key); + return getResponse(BuilderFactory.STRING); + } + + public Response spop(byte[] key) { + client.spop(key); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response srandmember(String key) { + client.srandmember(key); + return getResponse(BuilderFactory.STRING); + } + + public Response srandmember(byte[] key) { + client.srandmember(key); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response srem(String key, String member) { + client.srem(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response srem(byte[] key, byte[] member) { + client.srem(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response strlen(String key) { + client.strlen(key); + return getResponse(BuilderFactory.LONG); + } + + public Response strlen(byte[] key) { + client.strlen(key); + return getResponse(BuilderFactory.LONG); + } + + public Response substr(String key, int start, int end) { + client.substr(key, start, end); + return getResponse(BuilderFactory.STRING); + } + + public Response substr(byte[] key, int start, int end) { + client.substr(key, start, end); + return getResponse(BuilderFactory.STRING); + } + + public Response> sunion(String... keys) { + client.sunion(keys); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> sunion(byte[]... keys) { + client.sunion(keys); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response sunionstore(String dstkey, String... keys) { + client.sunionstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response sunionstore(byte[] dstkey, byte[]... keys) { + client.sunionstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response ttl(String key) { + client.ttl(key); + return getResponse(BuilderFactory.LONG); + } + + public Response ttl(byte[] key) { + client.ttl(key); + return getResponse(BuilderFactory.LONG); + } + + public Response type(String key) { + client.type(key); + return getResponse(BuilderFactory.STRING); + } + + public Response type(byte[] key) { + client.type(key); + return getResponse(BuilderFactory.STRING); + } + + public Response watch(String... keys) { + client.watch(keys); + return getResponse(BuilderFactory.STRING); + } + + public Response watch(byte[]... keys) { + client.watch(keys); + return getResponse(BuilderFactory.STRING); + } + + public Response zadd(String key, double score, String member) { + client.zadd(key, score, member); + return getResponse(BuilderFactory.LONG); + } + + public Response zadd(byte[] key, double score, byte[] member) { + client.zadd(key, score, member); + return getResponse(BuilderFactory.LONG); + } + + public Response zcard(String key) { + client.zcard(key); + return getResponse(BuilderFactory.LONG); + } + + public Response zcard(byte[] key) { + client.zcard(key); + return getResponse(BuilderFactory.LONG); + } + + public Response zcount(String key, double min, double max) { + client.zcount(key, min, max); + return getResponse(BuilderFactory.LONG); + } + + public Response zcount(byte[] key, double min, double max) { + client.zcount(key, toByteArray(min), toByteArray(max)); + return getResponse(BuilderFactory.LONG); + } + + public Response zincrby(String key, double score, String member) { + client.zincrby(key, score, member); + return getResponse(BuilderFactory.DOUBLE); + } + + public Response zincrby(byte[] key, double score, byte[] member) { + client.zincrby(key, score, member); + return getResponse(BuilderFactory.DOUBLE); + } + + public Response zinterstore(String dstkey, String... sets) { + client.zinterstore(dstkey, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zinterstore(byte[] dstkey, byte[]... sets) { + client.zinterstore(dstkey, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zinterstore(String dstkey, ZParams params, + String... sets) { + client.zinterstore(dstkey, params, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zinterstore(byte[] dstkey, ZParams params, + byte[]... sets) { + client.zinterstore(dstkey, params, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response> zrange(String key, int start, int end) { + client.zrange(key, start, end); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrange(byte[] key, int start, int end) { + client.zrange(key, start, end); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response> zrangeByScore(String key, double min, + double max) { + client.zrangeByScore(key, min, max); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrangeByScore(byte[] key, double min, + double max) { + return zrangeByScore(key, toByteArray(min), toByteArray(max)); + } + + public Response> zrangeByScore(String key, String min, + String max) { + client.zrangeByScore(key, min, max); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrangeByScore(byte[] key, byte[] min, + byte[] max) { + client.zrangeByScore(key, min, max); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response> zrangeByScore(String key, double min, + double max, int offset, int count) { + client.zrangeByScore(key, min, max, offset, count); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrangeByScore(byte[] key, double min, + double max, int offset, int count) { + return zrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); + } + + public Response> zrangeByScore(byte[] key, byte[] min, + byte[] max, int offset, int count) { + client.zrangeByScore(key, min, max, offset, count); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response> zrangeByScoreWithScores(String key, double min, + double max) { + client.zrangeByScoreWithScores(key, min, max); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrangeByScoreWithScores(byte[] key, double min, + double max) { + return zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max)); + } + + public Response> zrangeByScoreWithScores(byte[] key, byte[] min, + byte[] max) { + client.zrangeByScoreWithScores(key, min, max); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); + } + + public Response> zrangeByScoreWithScores(String key, double min, + double max, int offset, int count) { + client.zrangeByScoreWithScores(key, min, max, offset, count); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrangeByScoreWithScores(byte[] key, double min, + double max, int offset, int count) { + client.zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); + } + + public Response> zrangeByScoreWithScores(byte[] key, byte[] min, + byte[] max, int offset, int count) { + client.zrangeByScoreWithScores(key, min, max, offset, count); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); + } + + public Response> zrevrangeByScore(String key, double max, + double min) { + client.zrevrangeByScore(key, max, min); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrangeByScore(byte[] key, double max, + double min) { + client.zrevrangeByScore(key, toByteArray(max), toByteArray(min)); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response> zrevrangeByScore(String key, String max, + String min) { + client.zrevrangeByScore(key, max, min); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrangeByScore(byte[] key, byte[] max, + byte[] min) { + client.zrevrangeByScore(key, max, min); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response> zrevrangeByScore(String key, double max, + double min, int offset, int count) { + client.zrevrangeByScore(key, max, min, offset, count); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrangeByScore(byte[] key, double max, + double min, int offset, int count) { + client.zrevrangeByScore(key, toByteArray(max), toByteArray(min), offset, count); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response> zrevrangeByScore(byte[] key, byte[] max, + byte[] min, int offset, int count) { + client.zrevrangeByScore(key, max, min, offset, count); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response> zrevrangeByScoreWithScores(String key, + double max, double min) { + client.zrevrangeByScoreWithScores(key, max, min); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrevrangeByScoreWithScores(byte[] key, + double max, double min) { + client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min)); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); + } + + public Response> zrevrangeByScoreWithScores(byte[] key, + byte[] max, byte[] min) { + client.zrevrangeByScoreWithScores(key, max, min); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); + } + + public Response> zrevrangeByScoreWithScores(String key, + double max, double min, int offset, int count) { + client.zrevrangeByScoreWithScores(key, max, min, offset, count); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrevrangeByScoreWithScores(byte[] key, + double max, double min, int offset, int count) { + client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min), offset, count); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); + } + + public Response> zrevrangeByScoreWithScores(byte[] key, + byte[] max, byte[] min, int offset, int count) { + client.zrevrangeByScoreWithScores(key, max, min, offset, count); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); + } + + public Response> zrangeWithScores(String key, int start, int end) { + client.zrangeWithScores(key, start, end); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrangeWithScores(byte[] key, int start, int end) { + client.zrangeWithScores(key, start, end); + return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); + } + + public Response zrank(String key, String member) { + client.zrank(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response zrank(byte[] key, byte[] member) { + client.zrank(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response zrem(String key, String member) { + client.zrem(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response zrem(byte[] key, byte[] member) { + client.zrem(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response zremrangeByRank(String key, int start, int end) { + client.zremrangeByRank(key, start, end); + return getResponse(BuilderFactory.LONG); + } + + public Response zremrangeByRank(byte[] key, int start, int end) { + client.zremrangeByRank(key, start, end); + return getResponse(BuilderFactory.LONG); + } + + public Response zremrangeByScore(String key, double start, double end) { + client.zremrangeByScore(key, start, end); + return getResponse(BuilderFactory.LONG); + } + + public Response zremrangeByScore(byte[] key, double start, double end) { + client.zremrangeByScore(key, toByteArray(start), toByteArray(end)); + return getResponse(BuilderFactory.LONG); + } + + public Response zremrangeByScore(byte[] key, byte[] start, byte[] end) { + client.zremrangeByScore(key, start, end); + return getResponse(BuilderFactory.LONG); + } + + public Response> zrevrange(String key, int start, int end) { + client.zrevrange(key, start, end); + return getResponse(BuilderFactory.STRING_ZSET); + } + + public Response> zrevrange(byte[] key, int start, int end) { + client.zrevrange(key, start, end); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response> zrevrangeWithScores(String key, int start, + int end) { + client.zrevrangeWithScores(key, start, end); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response> zrevrangeWithScores(byte[] key, int start, + int end) { + client.zrevrangeWithScores(key, start, end); + return getResponse(BuilderFactory.TUPLE_ZSET); + } + + public Response zrevrank(String key, String member) { + client.zrevrank(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response zrevrank(byte[] key, byte[] member) { + client.zrevrank(key, member); + return getResponse(BuilderFactory.LONG); + } + + public Response zscore(String key, String member) { + client.zscore(key, member); + return getResponse(BuilderFactory.DOUBLE); + } + + public Response zscore(byte[] key, byte[] member) { + client.zscore(key, member); + return getResponse(BuilderFactory.DOUBLE); + } + + public Response zunionstore(String dstkey, String... sets) { + client.zunionstore(dstkey, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zunionstore(byte[] dstkey, byte[]... sets) { + client.zunionstore(dstkey, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zunionstore(String dstkey, ZParams params, + String... sets) { + client.zunionstore(dstkey, params, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zunionstore(byte[] dstkey, ZParams params, + byte[]... sets) { + client.zunionstore(dstkey, params, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response bgrewriteaof() { + client.bgrewriteaof(); + return getResponse(BuilderFactory.STRING); + } + + public Response bgsave() { + client.bgsave(); + return getResponse(BuilderFactory.STRING); + } + + public Response configGet(String pattern) { + client.configGet(pattern); + return getResponse(BuilderFactory.STRING); + } + + public Response configSet(String parameter, String value) { + client.configSet(parameter, value); + return getResponse(BuilderFactory.STRING); + } + + public Response brpoplpush(String source, String destination, + int timeout) { + client.brpoplpush(source, destination, timeout); + return getResponse(BuilderFactory.STRING); + } + + public Response brpoplpush(byte[] source, byte[] destination, + int timeout) { + client.brpoplpush(source, destination, timeout); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response configResetStat() { + client.configResetStat(); + return getResponse(BuilderFactory.STRING); + } + + public Response save() { + client.save(); + return getResponse(BuilderFactory.STRING); + } + + public Response lastsave() { + client.lastsave(); + return getResponse(BuilderFactory.LONG); + } + + public Response publish(String channel, String message) { + client.publish(channel, message); + return getResponse(BuilderFactory.LONG); + } + + public Response publish(byte[] channel, byte[] message) { + client.publish(channel, message); + return getResponse(BuilderFactory.LONG); + } + + public Response randomKey() { + client.randomKey(); + return getResponse(BuilderFactory.STRING); + } + + public Response randomKeyBinary() { + client.randomKey(); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response flushDB() { + client.flushDB(); + return getResponse(BuilderFactory.STRING); + } + + public Response flushAll() { + client.flushAll(); + return getResponse(BuilderFactory.STRING); + } + + public Response info() { + client.info(); + return getResponse(BuilderFactory.STRING); + } + + public Response dbSize() { + client.dbSize(); + return getResponse(BuilderFactory.LONG); + } + + public Response shutdown() { + client.shutdown(); + return getResponse(BuilderFactory.STRING); + } + + public Response ping() { + client.ping(); + return getResponse(BuilderFactory.STRING); + } + + public Response select(int index) { + client.select(index); + return getResponse(BuilderFactory.STRING); + } + + public Response bitcount(String key) { + client.bitcount(key); + return getResponse(BuilderFactory.LONG); + } + + public Response bitcount(String key, long start, long end) { + client.bitcount(key, start, end); + return getResponse(BuilderFactory.LONG); + } + + public Response bitcount(byte[] key) { + client.bitcount(key); + return getResponse(BuilderFactory.LONG); + } + + public Response bitcount(byte[] key, long start, long end) { + client.bitcount(key, start, end); + return getResponse(BuilderFactory.LONG); + } + + public Response bitop(BitOP op, byte[] destKey, byte[]... srcKeys) { + client.bitop(op, destKey, srcKeys); + return getResponse(BuilderFactory.LONG); + } + + public Response bitop(BitOP op, String destKey, String... srcKeys) { + client.bitop(op, destKey, srcKeys); + return getResponse(BuilderFactory.LONG); + } +} diff --git a/src/main/java/redis/clients/jedis/Transaction.java b/src/main/java/redis/clients/jedis/Transaction.java index 18c5f29..1629b59 100644 --- a/src/main/java/redis/clients/jedis/Transaction.java +++ b/src/main/java/redis/clients/jedis/Transaction.java @@ -1,579 +1,65 @@ package redis.clients.jedis; +import redis.clients.jedis.exceptions.JedisDataException; + +import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.Set; -import redis.clients.jedis.BinaryClient.LIST_POSITION; +/** + * Transaction is nearly identical to Pipeline, only differences are the multi/discard behaviors + */ +public class Transaction extends PipelineBase { -public class Transaction extends BinaryTransaction { - public Transaction() { + protected boolean inTransaction = true; + + protected Transaction(){ + // client will be set later in transaction block } public Transaction(final Client client) { - super(client); + this.client = client; + } + + public List exec() { + client.exec(); + client.getAll(1); // Discard all but the last reply + + List unformatted = client.getObjectMultiBulkReply(); + if (unformatted == null) { + return null; + } + List formatted = new ArrayList(); + for (Object o : unformatted) { + try { + formatted.add(generateResponse(o).get()); + } catch (JedisDataException e) { + formatted.add(e); + } + } + return formatted; + } + + public List> execGetResponse() { + client.exec(); + client.getAll(1); // Discard all but the last reply + + List unformatted = client.getObjectMultiBulkReply(); + if (unformatted == null) { + return null; + } + List> response = new ArrayList>(); + for (Object o : unformatted) { + response.add(generateResponse(o)); + } + return response; + } + + public String discard() { + client.discard(); + client.getAll(1); // Discard all but the last reply + inTransaction = false; + clean(); + return client.getStatusCodeReply(); } - public Response append(String key, String value) { - client.append(key, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> blpop(String... args) { - client.blpop(args); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> brpop(String... args) { - client.brpop(args); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response decr(String key) { - client.decr(key); - return getResponse(BuilderFactory.LONG); - } - - public Response decrBy(String key, long integer) { - client.decrBy(key, integer); - return getResponse(BuilderFactory.LONG); - } - - public Response del(String... keys) { - client.del(keys); - return getResponse(BuilderFactory.LONG); - } - - public Response echo(String string) { - client.echo(string); - return getResponse(BuilderFactory.STRING); - } - - public Response exists(String key) { - client.exists(key); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response expire(String key, int seconds) { - client.expire(key, seconds); - return getResponse(BuilderFactory.LONG); - } - - public Response expireAt(String key, long unixTime) { - client.expireAt(key, unixTime); - return getResponse(BuilderFactory.LONG); - } - - public Response get(String key) { - client.get(key); - return getResponse(BuilderFactory.STRING); - } - - public Response getbit(String key, long offset) { - client.getbit(key, offset); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response getrange(String key, long startOffset, - long endOffset) { - client.getrange(key, startOffset, endOffset); - return getResponse(BuilderFactory.STRING); - } - - public Response getSet(String key, String value) { - client.getSet(key, value); - return getResponse(BuilderFactory.STRING); - } - - public Response hdel(String key, String field) { - client.hdel(key, field); - return getResponse(BuilderFactory.LONG); - } - - public Response hexists(String key, String field) { - client.hexists(key, field); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response hget(String key, String field) { - client.hget(key, field); - return getResponse(BuilderFactory.STRING); - } - - public Response> hgetAll(String key) { - client.hgetAll(key); - return getResponse(BuilderFactory.STRING_MAP); - } - - public Response hincrBy(String key, String field, long value) { - client.hincrBy(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> hkeys(String key) { - client.hkeys(key); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response hlen(String key) { - client.hlen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response> hmget(String key, String... fields) { - client.hmget(key, fields); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response hmset(String key, Map hash) { - client.hmset(key, hash); - return getResponse(BuilderFactory.STRING); - } - - public Response hset(String key, String field, String value) { - client.hset(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response hsetnx(String key, String field, String value) { - client.hsetnx(key, field, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> hvals(String key) { - client.hvals(key); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response incr(String key) { - client.incr(key); - return getResponse(BuilderFactory.LONG); - } - - public Response incrBy(String key, long integer) { - client.incrBy(key, integer); - return getResponse(BuilderFactory.LONG); - } - - public Response> keys(String pattern) { - client.keys(pattern); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response lindex(String key, int index) { - client.lindex(key, index); - return getResponse(BuilderFactory.STRING); - } - - public Response linsert(String key, LIST_POSITION where, - String pivot, String value) { - client.linsert(key, where, pivot, value); - return getResponse(BuilderFactory.LONG); - } - - public Response llen(String key) { - client.llen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response lpop(String key) { - client.lpop(key); - return getResponse(BuilderFactory.STRING); - } - - public Response lpush(String key, String string) { - client.lpush(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response lpushx(String key, String string) { - client.lpushx(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response> lrange(String key, long start, long end) { - client.lrange(key, start, end); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response lrem(String key, long count, String value) { - client.lrem(key, count, value); - return getResponse(BuilderFactory.LONG); - } - - public Response lset(String key, long index, String value) { - client.lset(key, index, value); - return getResponse(BuilderFactory.STRING); - } - - public Response ltrim(String key, long start, long end) { - client.ltrim(key, start, end); - return getResponse(BuilderFactory.STRING); - } - - public Response> mget(String... keys) { - client.mget(keys); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response move(String key, int dbIndex) { - client.move(key, dbIndex); - return getResponse(BuilderFactory.LONG); - } - - public Response mset(String... keysvalues) { - client.mset(keysvalues); - return getResponse(BuilderFactory.STRING); - } - - public Response msetnx(String... keysvalues) { - client.msetnx(keysvalues); - return getResponse(BuilderFactory.LONG); - } - - public Response persist(String key) { - client.persist(key); - return getResponse(BuilderFactory.LONG); - } - - public Response rename(String oldkey, String newkey) { - client.rename(oldkey, newkey); - return getResponse(BuilderFactory.STRING); - } - - public Response renamenx(String oldkey, String newkey) { - client.renamenx(oldkey, newkey); - return getResponse(BuilderFactory.LONG); - } - - public Response rpop(String key) { - client.rpop(key); - return getResponse(BuilderFactory.STRING); - } - - public Response rpoplpush(String srckey, String dstkey) { - client.rpoplpush(srckey, dstkey); - return getResponse(BuilderFactory.STRING); - } - - public Response rpush(String key, String string) { - client.rpush(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response rpushx(String key, String string) { - client.rpushx(key, string); - return getResponse(BuilderFactory.LONG); - } - - public Response sadd(String key, String member) { - client.sadd(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response scard(String key) { - client.scard(key); - return getResponse(BuilderFactory.LONG); - } - - public Response> sdiff(String... keys) { - client.sdiff(keys); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response sdiffstore(String dstkey, String... keys) { - client.sdiffstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response set(String key, String value) { - client.set(key, value); - return getResponse(BuilderFactory.STRING); - } - - public Response setbit(String key, long offset, boolean value) { - client.setbit(key, offset, value); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response setex(String key, int seconds, String value) { - client.setex(key, seconds, value); - return getResponse(BuilderFactory.STRING); - } - - public Response setnx(String key, String value) { - client.setnx(key, value); - return getResponse(BuilderFactory.LONG); - } - - public Response setrange(String key, long offset, String value) { - client.setrange(key, offset, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> sinter(String... keys) { - client.sinter(keys); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response sinterstore(String dstkey, String... keys) { - client.sinterstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response sismember(String key, String member) { - client.sismember(key, member); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response> smembers(String key) { - client.smembers(key); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response smove(String srckey, String dstkey, String member) { - client.smove(srckey, dstkey, member); - return getResponse(BuilderFactory.LONG); - } - - public Response> sort(String key) { - client.sort(key); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(String key, - SortingParams sortingParameters) { - client.sort(key, sortingParameters); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(String key, - SortingParams sortingParameters, String dstkey) { - client.sort(key, sortingParameters, dstkey); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(String key, String dstkey) { - client.sort(key, dstkey); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response spop(String key) { - client.spop(key); - return getResponse(BuilderFactory.STRING); - } - - public Response srandmember(String key) { - client.srandmember(key); - return getResponse(BuilderFactory.STRING); - } - - public Response srem(String key, String member) { - client.srem(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response strlen(String key) { - client.strlen(key); - return getResponse(BuilderFactory.LONG); - } - - public Response substr(String key, int start, int end) { - client.substr(key, start, end); - return getResponse(BuilderFactory.STRING); - } - - public Response> sunion(String... keys) { - client.sunion(keys); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response sunionstore(String dstkey, String... keys) { - client.sunionstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response ttl(String key) { - client.ttl(key); - return getResponse(BuilderFactory.LONG); - } - - public Response type(String key) { - client.type(key); - return getResponse(BuilderFactory.STRING); - } - - public Response zadd(String key, double score, String member) { - client.zadd(key, score, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zcard(String key) { - client.zcard(key); - return getResponse(BuilderFactory.LONG); - } - - public Response zcount(String key, double min, double max) { - client.zcount(key, min, max); - return getResponse(BuilderFactory.LONG); - } - - public Response zincrby(String key, double score, String member) { - client.zincrby(key, score, member); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zinterstore(String dstkey, String... sets) { - client.zinterstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zinterstore(String dstkey, ZParams params, - String... sets) { - client.zinterstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response> zrange(String key, int start, int end) { - client.zrange(key, start, end); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScore(String key, double min, - double max) { - client.zrangeByScore(key, min, max); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScore(String key, String min, - String max) { - client.zrangeByScore(key, min, max); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScore(String key, double min, - double max, int offset, int count) { - client.zrangeByScore(key, min, max, offset, count); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScoreWithScores(String key, double min, - double max) { - client.zrangeByScoreWithScores(key, min, max); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeByScoreWithScores(String key, double min, - double max, int offset, int count) { - client.zrangeByScoreWithScores(key, min, max, offset, count); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeWithScores(String key, int start, int end) { - client.zrangeWithScores(key, start, end); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response zrank(String key, String member) { - client.zrank(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zrem(String key, String member) { - client.zrem(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByRank(String key, int start, int end) { - client.zremrangeByRank(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByScore(String key, double start, double end) { - client.zremrangeByScore(key, start, end); - return getResponse(BuilderFactory.LONG); - } - - public Response> zrevrange(String key, int start, int end) { - client.zrevrange(key, start, end); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrevrangeWithScores(String key, int start, - int end) { - client.zrevrangeWithScores(key, start, end); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response zrevrank(String key, String member) { - client.zrevrank(key, member); - return getResponse(BuilderFactory.LONG); - } - - public Response zscore(String key, String member) { - client.zscore(key, member); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zunionstore(String dstkey, String... sets) { - client.zunionstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zunionstore(String dstkey, ZParams params, - String... sets) { - client.zunionstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response bgrewriteaof() { - client.bgrewriteaof(); - return getResponse(BuilderFactory.STRING); - } - - public Response bgsave() { - client.bgsave(); - return getResponse(BuilderFactory.STRING); - } - - public Response configGet(String pattern) { - client.configGet(pattern); - return getResponse(BuilderFactory.STRING); - } - - public Response configSet(String parameter, String value) { - client.configSet(parameter, value); - return getResponse(BuilderFactory.STRING); - } - - public Response brpoplpush(String source, String destination, - int timeout) { - client.brpoplpush(source, destination, timeout); - return getResponse(BuilderFactory.STRING); - } - - public Response configResetStat() { - client.configResetStat(); - return getResponse(BuilderFactory.STRING); - } - - public Response save() { - client.save(); - return getResponse(BuilderFactory.STRING); - } - - public Response lastsave() { - client.lastsave(); - return getResponse(BuilderFactory.LONG); - } - - public Response publish(String channel, String message) { - client.publish(channel, message); - return getResponse(BuilderFactory.LONG); - } - - public Response publish(byte[] channel, byte[] message) { - client.publish(channel, message); - return getResponse(BuilderFactory.LONG); - } } \ No newline at end of file diff --git a/src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java index 8167658..5e03270 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/TransactionCommandsTest.java @@ -171,7 +171,7 @@ public class TransactionCommandsTest extends JedisCommandTestBase { t.set(bmykey, bval); resp = t.exec(); assertEquals(1, resp.size()); - assertArrayEquals("OK".getBytes(), (byte[]) resp.get(0)); + assertEquals("OK", resp.get(0)); } @Test(expected = JedisDataException.class) From 6b5fccdc0ad69742b171d25515a0a9a630ac4635 Mon Sep 17 00:00:00 2001 From: samhendley Date: Thu, 10 Jan 2013 02:29:39 -0500 Subject: [PATCH 18/23] refactored pipelinebase so it is usable to implement SharedJedisPipeline as well. --- .../clients/jedis/MultiKeyPipelineBase.java | 370 +++++ .../java/redis/clients/jedis/Pipeline.java | 10 +- .../redis/clients/jedis/PipelineBase.java | 740 +++------- .../clients/jedis/ShardedJedisPipeline.java | 1302 +---------------- .../java/redis/clients/jedis/Transaction.java | 12 +- .../redis/clients/jedis/TransactionBlock.java | 2 +- 6 files changed, 597 insertions(+), 1839 deletions(-) create mode 100644 src/main/java/redis/clients/jedis/MultiKeyPipelineBase.java diff --git a/src/main/java/redis/clients/jedis/MultiKeyPipelineBase.java b/src/main/java/redis/clients/jedis/MultiKeyPipelineBase.java new file mode 100644 index 0000000..ccf0dfd --- /dev/null +++ b/src/main/java/redis/clients/jedis/MultiKeyPipelineBase.java @@ -0,0 +1,370 @@ +package redis.clients.jedis; + +import java.util.List; +import java.util.Set; + +abstract class MultiKeyPipelineBase extends PipelineBase implements + BasicRedisPipeline, + MultiKeyBinaryRedisPipeline, + MultiKeyCommandsPipeline { + + protected Client client = null; + + public Response> brpop(String... args) { + client.brpop(args); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> blpop(String... args) { + client.blpop(args); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> brpop(byte[]... args) { + client.brpop(args); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> blpop(byte[]... args) { + client.blpop(args); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response del(String... keys) { + client.del(keys); + return getResponse(BuilderFactory.LONG); + } + + public Response del(byte[]... keys) { + client.del(keys); + return getResponse(BuilderFactory.LONG); + } + + public Response> keys(String pattern) { + getClient(pattern).keys(pattern); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> keys(byte[] pattern) { + getClient(pattern).keys(pattern); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response> mget(String... keys) { + client.mget(keys); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> mget(byte[]... keys) { + client.mget(keys); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response mset(String... keysvalues) { + client.mset(keysvalues); + return getResponse(BuilderFactory.STRING); + } + + public Response mset(byte[]... keysvalues) { + client.mset(keysvalues); + return getResponse(BuilderFactory.STRING); + } + + public Response msetnx(String... keysvalues) { + client.msetnx(keysvalues); + return getResponse(BuilderFactory.LONG); + } + + public Response msetnx(byte[]... keysvalues) { + client.msetnx(keysvalues); + return getResponse(BuilderFactory.LONG); + } + + public Response rename(String oldkey, String newkey) { + client.rename(oldkey, newkey); + return getResponse(BuilderFactory.STRING); + } + + public Response rename(byte[] oldkey, byte[] newkey) { + client.rename(oldkey, newkey); + return getResponse(BuilderFactory.STRING); + } + + public Response renamenx(String oldkey, String newkey) { + client.renamenx(oldkey, newkey); + return getResponse(BuilderFactory.LONG); + } + + public Response renamenx(byte[] oldkey, byte[] newkey) { + client.renamenx(oldkey, newkey); + return getResponse(BuilderFactory.LONG); + } + + public Response rpoplpush(String srckey, String dstkey) { + client.rpoplpush(srckey, dstkey); + return getResponse(BuilderFactory.STRING); + } + + public Response rpoplpush(byte[] srckey, byte[] dstkey) { + client.rpoplpush(srckey, dstkey); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response> sdiff(String... keys) { + client.sdiff(keys); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> sdiff(byte[]... keys) { + client.sdiff(keys); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response sdiffstore(String dstkey, String... keys) { + client.sdiffstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response sdiffstore(byte[] dstkey, byte[]... keys) { + client.sdiffstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response> sinter(String... keys) { + client.sinter(keys); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> sinter(byte[]... keys) { + client.sinter(keys); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response sinterstore(String dstkey, String... keys) { + client.sinterstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response sinterstore(byte[] dstkey, byte[]... keys) { + client.sinterstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response smove(String srckey, String dstkey, String member) { + client.smove(srckey, dstkey, member); + return getResponse(BuilderFactory.LONG); + } + + public Response smove(byte[] srckey, byte[] dstkey, byte[] member) { + client.smove(srckey, dstkey, member); + return getResponse(BuilderFactory.LONG); + } + + public Response> sort(String key, + SortingParams sortingParameters, String dstkey) { + client.sort(key, sortingParameters, dstkey); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> sort(byte[] key, + SortingParams sortingParameters, byte[] dstkey) { + client.sort(key, sortingParameters, dstkey); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> sort(String key, String dstkey) { + client.sort(key, dstkey); + return getResponse(BuilderFactory.STRING_LIST); + } + + public Response> sort(byte[] key, byte[] dstkey) { + client.sort(key, dstkey); + return getResponse(BuilderFactory.BYTE_ARRAY_LIST); + } + + public Response> sunion(String... keys) { + client.sunion(keys); + return getResponse(BuilderFactory.STRING_SET); + } + + public Response> sunion(byte[]... keys) { + client.sunion(keys); + return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); + } + + public Response sunionstore(String dstkey, String... keys) { + client.sunionstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response sunionstore(byte[] dstkey, byte[]... keys) { + client.sunionstore(dstkey, keys); + return getResponse(BuilderFactory.LONG); + } + + public Response watch(String... keys) { + client.watch(keys); + return getResponse(BuilderFactory.STRING); + } + + public Response watch(byte[]... keys) { + client.watch(keys); + return getResponse(BuilderFactory.STRING); + } + + public Response zinterstore(String dstkey, String... sets) { + client.zinterstore(dstkey, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zinterstore(byte[] dstkey, byte[]... sets) { + client.zinterstore(dstkey, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zinterstore(String dstkey, ZParams params, + String... sets) { + client.zinterstore(dstkey, params, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zinterstore(byte[] dstkey, ZParams params, + byte[]... sets) { + client.zinterstore(dstkey, params, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zunionstore(String dstkey, String... sets) { + client.zunionstore(dstkey, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zunionstore(byte[] dstkey, byte[]... sets) { + client.zunionstore(dstkey, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zunionstore(String dstkey, ZParams params, + String... sets) { + client.zunionstore(dstkey, params, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response zunionstore(byte[] dstkey, ZParams params, + byte[]... sets) { + client.zunionstore(dstkey, params, sets); + return getResponse(BuilderFactory.LONG); + } + + public Response bgrewriteaof() { + client.bgrewriteaof(); + return getResponse(BuilderFactory.STRING); + } + + public Response bgsave() { + client.bgsave(); + return getResponse(BuilderFactory.STRING); + } + + public Response configGet(String pattern) { + client.configGet(pattern); + return getResponse(BuilderFactory.STRING); + } + + public Response configSet(String parameter, String value) { + client.configSet(parameter, value); + return getResponse(BuilderFactory.STRING); + } + + public Response brpoplpush(String source, String destination, + int timeout) { + client.brpoplpush(source, destination, timeout); + return getResponse(BuilderFactory.STRING); + } + + public Response brpoplpush(byte[] source, byte[] destination, + int timeout) { + client.brpoplpush(source, destination, timeout); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response configResetStat() { + client.configResetStat(); + return getResponse(BuilderFactory.STRING); + } + + public Response save() { + client.save(); + return getResponse(BuilderFactory.STRING); + } + + public Response lastsave() { + client.lastsave(); + return getResponse(BuilderFactory.LONG); + } + + public Response publish(String channel, String message) { + client.publish(channel, message); + return getResponse(BuilderFactory.LONG); + } + + public Response publish(byte[] channel, byte[] message) { + client.publish(channel, message); + return getResponse(BuilderFactory.LONG); + } + + public Response randomKey() { + client.randomKey(); + return getResponse(BuilderFactory.STRING); + } + + public Response randomKeyBinary() { + client.randomKey(); + return getResponse(BuilderFactory.BYTE_ARRAY); + } + + public Response flushDB() { + client.flushDB(); + return getResponse(BuilderFactory.STRING); + } + + public Response flushAll() { + client.flushAll(); + return getResponse(BuilderFactory.STRING); + } + + public Response info() { + client.info(); + return getResponse(BuilderFactory.STRING); + } + + public Response dbSize() { + client.dbSize(); + return getResponse(BuilderFactory.LONG); + } + + public Response shutdown() { + client.shutdown(); + return getResponse(BuilderFactory.STRING); + } + + public Response ping() { + client.ping(); + return getResponse(BuilderFactory.STRING); + } + + public Response select(int index) { + client.select(index); + return getResponse(BuilderFactory.STRING); + } + + public Response bitop(BitOP op, byte[] destKey, byte[]... srcKeys) { + client.bitop(op, destKey, srcKeys); + return getResponse(BuilderFactory.LONG); + } + + public Response bitop(BitOP op, String destKey, String... srcKeys) { + client.bitop(op, destKey, srcKeys); + return getResponse(BuilderFactory.LONG); + } +} diff --git a/src/main/java/redis/clients/jedis/Pipeline.java b/src/main/java/redis/clients/jedis/Pipeline.java index cf61066..ee680eb 100755 --- a/src/main/java/redis/clients/jedis/Pipeline.java +++ b/src/main/java/redis/clients/jedis/Pipeline.java @@ -5,7 +5,7 @@ import redis.clients.jedis.exceptions.JedisDataException; import java.util.ArrayList; import java.util.List; -public class Pipeline extends PipelineBase { +public class Pipeline extends MultiKeyPipelineBase { private MultiResponseBuilder currentMulti; @@ -53,7 +53,15 @@ public class Pipeline extends PipelineBase { this.client = client; } + @Override + protected Client getClient(byte[] key) { + return client; + } + @Override + protected Client getClient(String key) { + return client; + } /** * Syncronize pipeline by reading all responses. This operation close the diff --git a/src/main/java/redis/clients/jedis/PipelineBase.java b/src/main/java/redis/clients/jedis/PipelineBase.java index b8fdefd..2af0899 100644 --- a/src/main/java/redis/clients/jedis/PipelineBase.java +++ b/src/main/java/redis/clients/jedis/PipelineBase.java @@ -1,924 +1,707 @@ package redis.clients.jedis; -import static redis.clients.jedis.Protocol.toByteArray; +import redis.clients.jedis.BinaryClient.LIST_POSITION; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; -import redis.clients.jedis.BinaryClient.LIST_POSITION; -import redis.clients.jedis.exceptions.JedisDataException; +import static redis.clients.jedis.Protocol.toByteArray; abstract class PipelineBase extends Queable implements - BasicRedisPipeline, BinaryRedisPipeline, - RedisPipeline, - MultiKeyBinaryRedisPipeline, - MultiKeyCommandsPipeline { - - protected Client client; + RedisPipeline { + + protected abstract Client getClient(String key); + + protected abstract Client getClient(byte[] key); public Response append(String key, String value) { - client.append(key, value); + getClient(key).append(key, value); return getResponse(BuilderFactory.LONG); } public Response append(byte[] key, byte[] value) { - client.append(key, value); + getClient(key).append(key, value); return getResponse(BuilderFactory.LONG); } - public Response> blpop(String arg) { + public Response> blpop(String key) { String[] temp = new String[1]; - temp[0] = arg; - client.blpop(temp); + temp[0] = key; + getClient(key).blpop(temp); return getResponse(BuilderFactory.STRING_LIST); } - public Response> brpop(String arg) { + public Response> brpop(String key) { String[] temp = new String[1]; - temp[0] = arg; - client.brpop(temp); + temp[0] = key; + getClient(key).brpop(temp); return getResponse(BuilderFactory.STRING_LIST); } - public Response> blpop(byte[] arg) { + public Response> blpop(byte[] key) { byte[][] temp = new byte[1][]; - temp[0] = arg; - client.blpop(temp); + temp[0] = key; + getClient(key).blpop(temp); return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } - public Response> brpop(byte[] arg) { + public Response> brpop(byte[] key) { byte[][] temp = new byte[1][]; - temp[0] = arg; - client.brpop(temp); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> blpop(String... args) { - client.blpop(args); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> blpop(byte[]... args) { - client.blpop(args); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> brpop(String... args) { - client.brpop(args); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> brpop(byte[]... args) { - client.brpop(args); + temp[0] = key; + getClient(key).brpop(temp); return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response decr(String key) { - client.decr(key); + getClient(key).decr(key); return getResponse(BuilderFactory.LONG); } public Response decr(byte[] key) { - client.decr(key); + getClient(key).decr(key); return getResponse(BuilderFactory.LONG); } public Response decrBy(String key, long integer) { - client.decrBy(key, integer); + getClient(key).decrBy(key, integer); return getResponse(BuilderFactory.LONG); } public Response decrBy(byte[] key, long integer) { - client.decrBy(key, integer); + getClient(key).decrBy(key, integer); return getResponse(BuilderFactory.LONG); } public Response del(String key) { - client.del(key); - return getResponse(BuilderFactory.LONG); - } - - public Response del(String... keys) { - client.del(keys); + getClient(key).del(key); return getResponse(BuilderFactory.LONG); } public Response del(byte[] key) { - client.del(key); - return getResponse(BuilderFactory.LONG); - } - - public Response del(byte[]... keys) { - client.del(keys); + getClient(key).del(key); return getResponse(BuilderFactory.LONG); } public Response echo(String string) { - client.echo(string); + getClient(string).echo(string); return getResponse(BuilderFactory.STRING); } public Response echo(byte[] string) { - client.echo(string); + getClient(string).echo(string); return getResponse(BuilderFactory.BYTE_ARRAY); } public Response exists(String key) { - client.exists(key); + getClient(key).exists(key); return getResponse(BuilderFactory.BOOLEAN); } public Response exists(byte[] key) { - client.exists(key); + getClient(key).exists(key); return getResponse(BuilderFactory.BOOLEAN); } public Response expire(String key, int seconds) { - client.expire(key, seconds); + getClient(key).expire(key, seconds); return getResponse(BuilderFactory.LONG); } public Response expire(byte[] key, int seconds) { - client.expire(key, seconds); + getClient(key).expire(key, seconds); return getResponse(BuilderFactory.LONG); } public Response expireAt(String key, long unixTime) { - client.expireAt(key, unixTime); + getClient(key).expireAt(key, unixTime); return getResponse(BuilderFactory.LONG); } public Response expireAt(byte[] key, long unixTime) { - client.expireAt(key, unixTime); + getClient(key).expireAt(key, unixTime); return getResponse(BuilderFactory.LONG); } public Response get(String key) { - client.get(key); + getClient(key).get(key); return getResponse(BuilderFactory.STRING); } public Response get(byte[] key) { - client.get(key); + getClient(key).get(key); return getResponse(BuilderFactory.BYTE_ARRAY); } public Response getbit(String key, long offset) { - client.getbit(key, offset); + getClient(key).getbit(key, offset); return getResponse(BuilderFactory.BOOLEAN); } public Response getbit(byte[] key, long offset) { - client.getbit(key, offset); + getClient(key).getbit(key, offset); return getResponse(BuilderFactory.BOOLEAN); } public Response getrange(String key, long startOffset, long endOffset) { - client.getrange(key, startOffset, endOffset); + getClient(key).getrange(key, startOffset, endOffset); return getResponse(BuilderFactory.STRING); } public Response getSet(String key, String value) { - client.getSet(key, value); + getClient(key).getSet(key, value); return getResponse(BuilderFactory.STRING); } public Response getSet(byte[] key, byte[] value) { - client.getSet(key, value); + getClient(key).getSet(key, value); return getResponse(BuilderFactory.BYTE_ARRAY); } public Response getrange(byte[] key, long startOffset, long endOffset) { - client.getrange(key, startOffset, endOffset); + getClient(key).getrange(key, startOffset, endOffset); return getResponse(BuilderFactory.LONG); } public Response hdel(String key, String field) { - client.hdel(key, field); + getClient(key).hdel(key, field); return getResponse(BuilderFactory.LONG); } public Response hdel(byte[] key, byte[] field) { - client.hdel(key, field); + getClient(key).hdel(key, field); return getResponse(BuilderFactory.LONG); } public Response hexists(String key, String field) { - client.hexists(key, field); + getClient(key).hexists(key, field); return getResponse(BuilderFactory.BOOLEAN); } public Response hexists(byte[] key, byte[] field) { - client.hexists(key, field); + getClient(key).hexists(key, field); return getResponse(BuilderFactory.BOOLEAN); } public Response hget(String key, String field) { - client.hget(key, field); + getClient(key).hget(key, field); return getResponse(BuilderFactory.STRING); } public Response hget(byte[] key, byte[] field) { - client.hget(key, field); + getClient(key).hget(key, field); return getResponse(BuilderFactory.BYTE_ARRAY); } public Response> hgetAll(String key) { - client.hgetAll(key); + getClient(key).hgetAll(key); return getResponse(BuilderFactory.STRING_MAP); } public Response> hgetAll(byte[] key) { - client.hgetAll(key); + getClient(key).hgetAll(key); return getResponse(BuilderFactory.BYTE_ARRAY_MAP); } public Response hincrBy(String key, String field, long value) { - client.hincrBy(key, field, value); + getClient(key).hincrBy(key, field, value); return getResponse(BuilderFactory.LONG); } public Response hincrBy(byte[] key, byte[] field, long value) { - client.hincrBy(key, field, value); + getClient(key).hincrBy(key, field, value); return getResponse(BuilderFactory.LONG); } public Response> hkeys(String key) { - client.hkeys(key); + getClient(key).hkeys(key); return getResponse(BuilderFactory.STRING_SET); } public Response> hkeys(byte[] key) { - client.hkeys(key); + getClient(key).hkeys(key); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response hlen(String key) { - client.hlen(key); + getClient(key).hlen(key); return getResponse(BuilderFactory.LONG); } public Response hlen(byte[] key) { - client.hlen(key); + getClient(key).hlen(key); return getResponse(BuilderFactory.LONG); } public Response> hmget(String key, String... fields) { - client.hmget(key, fields); + getClient(key).hmget(key, fields); return getResponse(BuilderFactory.STRING_LIST); } public Response> hmget(byte[] key, byte[]... fields) { - client.hmget(key, fields); + getClient(key).hmget(key, fields); return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response hmset(String key, Map hash) { - client.hmset(key, hash); + getClient(key).hmset(key, hash); return getResponse(BuilderFactory.STRING); } public Response hmset(byte[] key, Map hash) { - client.hmset(key, hash); + getClient(key).hmset(key, hash); return getResponse(BuilderFactory.STRING); } public Response hset(String key, String field, String value) { - client.hset(key, field, value); + getClient(key).hset(key, field, value); return getResponse(BuilderFactory.LONG); } public Response hset(byte[] key, byte[] field, byte[] value) { - client.hset(key, field, value); + getClient(key).hset(key, field, value); return getResponse(BuilderFactory.LONG); } public Response hsetnx(String key, String field, String value) { - client.hsetnx(key, field, value); + getClient(key).hsetnx(key, field, value); return getResponse(BuilderFactory.LONG); } public Response hsetnx(byte[] key, byte[] field, byte[] value) { - client.hsetnx(key, field, value); + getClient(key).hsetnx(key, field, value); return getResponse(BuilderFactory.LONG); } public Response> hvals(String key) { - client.hvals(key); + getClient(key).hvals(key); return getResponse(BuilderFactory.STRING_LIST); } public Response> hvals(byte[] key) { - client.hvals(key); + getClient(key).hvals(key); return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response incr(String key) { - client.incr(key); + getClient(key).incr(key); return getResponse(BuilderFactory.LONG); } public Response incr(byte[] key) { - client.incr(key); + getClient(key).incr(key); return getResponse(BuilderFactory.LONG); } public Response incrBy(String key, long integer) { - client.incrBy(key, integer); + getClient(key).incrBy(key, integer); return getResponse(BuilderFactory.LONG); } public Response incrBy(byte[] key, long integer) { - client.incrBy(key, integer); + getClient(key).incrBy(key, integer); return getResponse(BuilderFactory.LONG); } public Response> keys(String pattern) { - client.keys(pattern); + getClient(pattern).keys(pattern); return getResponse(BuilderFactory.STRING_SET); } public Response> keys(byte[] pattern) { - client.keys(pattern); + getClient(pattern).keys(pattern); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response lindex(String key, int index) { - client.lindex(key, index); + getClient(key).lindex(key, index); return getResponse(BuilderFactory.STRING); } public Response lindex(byte[] key, int index) { - client.lindex(key, index); + getClient(key).lindex(key, index); return getResponse(BuilderFactory.BYTE_ARRAY); } public Response linsert(String key, LIST_POSITION where, String pivot, String value) { - client.linsert(key, where, pivot, value); + getClient(key).linsert(key, where, pivot, value); return getResponse(BuilderFactory.LONG); } public Response linsert(byte[] key, LIST_POSITION where, byte[] pivot, byte[] value) { - client.linsert(key, where, pivot, value); + getClient(key).linsert(key, where, pivot, value); return getResponse(BuilderFactory.LONG); } public Response llen(String key) { - client.llen(key); + getClient(key).llen(key); return getResponse(BuilderFactory.LONG); } public Response llen(byte[] key) { - client.llen(key); + getClient(key).llen(key); return getResponse(BuilderFactory.LONG); } public Response lpop(String key) { - client.lpop(key); + getClient(key).lpop(key); return getResponse(BuilderFactory.STRING); } public Response lpop(byte[] key) { - client.lpop(key); + getClient(key).lpop(key); return getResponse(BuilderFactory.BYTE_ARRAY); } public Response lpush(String key, String string) { - client.lpush(key, string); + getClient(key).lpush(key, string); return getResponse(BuilderFactory.LONG); } public Response lpush(byte[] key, byte[] string) { - client.lpush(key, string); + getClient(key).lpush(key, string); return getResponse(BuilderFactory.LONG); } public Response lpushx(String key, String string) { - client.lpushx(key, string); + getClient(key).lpushx(key, string); return getResponse(BuilderFactory.LONG); } public Response lpushx(byte[] key, byte[] bytes) { - client.lpushx(key, bytes); + getClient(key).lpushx(key, bytes); return getResponse(BuilderFactory.LONG); } public Response> lrange(String key, long start, long end) { - client.lrange(key, start, end); + getClient(key).lrange(key, start, end); return getResponse(BuilderFactory.STRING_LIST); } public Response> lrange(byte[] key, long start, long end) { - client.lrange(key, start, end); + getClient(key).lrange(key, start, end); return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response lrem(String key, long count, String value) { - client.lrem(key, count, value); + getClient(key).lrem(key, count, value); return getResponse(BuilderFactory.LONG); } public Response lrem(byte[] key, long count, byte[] value) { - client.lrem(key, count, value); + getClient(key).lrem(key, count, value); return getResponse(BuilderFactory.LONG); } public Response lset(String key, long index, String value) { - client.lset(key, index, value); + getClient(key).lset(key, index, value); return getResponse(BuilderFactory.STRING); } public Response lset(byte[] key, long index, byte[] value) { - client.lset(key, index, value); + getClient(key).lset(key, index, value); return getResponse(BuilderFactory.STRING); } public Response ltrim(String key, long start, long end) { - client.ltrim(key, start, end); + getClient(key).ltrim(key, start, end); return getResponse(BuilderFactory.STRING); } public Response ltrim(byte[] key, long start, long end) { - client.ltrim(key, start, end); + getClient(key).ltrim(key, start, end); return getResponse(BuilderFactory.STRING); } - public Response> mget(String... keys) { - client.mget(keys); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> mget(byte[]... keys) { - client.mget(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - public Response move(String key, int dbIndex) { - client.move(key, dbIndex); + getClient(key).move(key, dbIndex); return getResponse(BuilderFactory.LONG); } public Response move(byte[] key, int dbIndex) { - client.move(key, dbIndex); - return getResponse(BuilderFactory.LONG); - } - - public Response mset(String... keysvalues) { - client.mset(keysvalues); - return getResponse(BuilderFactory.STRING); - } - - public Response mset(byte[]... keysvalues) { - client.mset(keysvalues); - return getResponse(BuilderFactory.STRING); - } - - public Response msetnx(String... keysvalues) { - client.msetnx(keysvalues); - return getResponse(BuilderFactory.LONG); - } - - public Response msetnx(byte[]... keysvalues) { - client.msetnx(keysvalues); + getClient(key).move(key, dbIndex); return getResponse(BuilderFactory.LONG); } public Response persist(String key) { - client.persist(key); + getClient(key).persist(key); return getResponse(BuilderFactory.LONG); } public Response persist(byte[] key) { - client.persist(key); - return getResponse(BuilderFactory.LONG); - } - - public Response rename(String oldkey, String newkey) { - client.rename(oldkey, newkey); - return getResponse(BuilderFactory.STRING); - } - - public Response rename(byte[] oldkey, byte[] newkey) { - client.rename(oldkey, newkey); - return getResponse(BuilderFactory.STRING); - } - - public Response renamenx(String oldkey, String newkey) { - client.renamenx(oldkey, newkey); - return getResponse(BuilderFactory.LONG); - } - - public Response renamenx(byte[] oldkey, byte[] newkey) { - client.renamenx(oldkey, newkey); + getClient(key).persist(key); return getResponse(BuilderFactory.LONG); } public Response rpop(String key) { - client.rpop(key); + getClient(key).rpop(key); return getResponse(BuilderFactory.STRING); } public Response rpop(byte[] key) { - client.rpop(key); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response rpoplpush(String srckey, String dstkey) { - client.rpoplpush(srckey, dstkey); - return getResponse(BuilderFactory.STRING); - } - - public Response rpoplpush(byte[] srckey, byte[] dstkey) { - client.rpoplpush(srckey, dstkey); + getClient(key).rpop(key); return getResponse(BuilderFactory.BYTE_ARRAY); } public Response rpush(String key, String string) { - client.rpush(key, string); + getClient(key).rpush(key, string); return getResponse(BuilderFactory.LONG); } public Response rpush(byte[] key, byte[] string) { - client.rpush(key, string); + getClient(key).rpush(key, string); return getResponse(BuilderFactory.LONG); } public Response rpushx(String key, String string) { - client.rpushx(key, string); + getClient(key).rpushx(key, string); return getResponse(BuilderFactory.LONG); } public Response rpushx(byte[] key, byte[] string) { - client.rpushx(key, string); + getClient(key).rpushx(key, string); return getResponse(BuilderFactory.LONG); } public Response sadd(String key, String member) { - client.sadd(key, member); + getClient(key).sadd(key, member); return getResponse(BuilderFactory.LONG); } public Response sadd(byte[] key, byte[] member) { - client.sadd(key, member); + getClient(key).sadd(key, member); return getResponse(BuilderFactory.LONG); } public Response scard(String key) { - client.scard(key); + getClient(key).scard(key); return getResponse(BuilderFactory.LONG); } public Response scard(byte[] key) { - client.scard(key); - return getResponse(BuilderFactory.LONG); - } - - public Response> sdiff(String... keys) { - client.sdiff(keys); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> sdiff(byte[]... keys) { - client.sdiff(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response sdiffstore(String dstkey, String... keys) { - client.sdiffstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response sdiffstore(byte[] dstkey, byte[]... keys) { - client.sdiffstore(dstkey, keys); + getClient(key).scard(key); return getResponse(BuilderFactory.LONG); } public Response set(String key, String value) { - client.set(key, value); + getClient(key).set(key, value); return getResponse(BuilderFactory.STRING); } public Response set(byte[] key, byte[] value) { - client.set(key, value); + getClient(key).set(key, value); return getResponse(BuilderFactory.STRING); } public Response setbit(String key, long offset, boolean value) { - client.setbit(key, offset, value); + getClient(key).setbit(key, offset, value); return getResponse(BuilderFactory.BOOLEAN); } public Response setbit(byte[] key, long offset, byte[] value) { - client.setbit(key, offset, value); + getClient(key).setbit(key, offset, value); return getResponse(BuilderFactory.BOOLEAN); } public Response setex(String key, int seconds, String value) { - client.setex(key, seconds, value); + getClient(key).setex(key, seconds, value); return getResponse(BuilderFactory.STRING); } public Response setex(byte[] key, int seconds, byte[] value) { - client.setex(key, seconds, value); + getClient(key).setex(key, seconds, value); return getResponse(BuilderFactory.STRING); } public Response setnx(String key, String value) { - client.setnx(key, value); + getClient(key).setnx(key, value); return getResponse(BuilderFactory.LONG); } public Response setnx(byte[] key, byte[] value) { - client.setnx(key, value); + getClient(key).setnx(key, value); return getResponse(BuilderFactory.LONG); } public Response setrange(String key, long offset, String value) { - client.setrange(key, offset, value); + getClient(key).setrange(key, offset, value); return getResponse(BuilderFactory.LONG); } public Response setrange(byte[] key, long offset, byte[] value) { - client.setrange(key, offset, value); - return getResponse(BuilderFactory.LONG); - } - - public Response> sinter(String... keys) { - client.sinter(keys); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> sinter(byte[]... keys) { - client.sinter(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response sinterstore(String dstkey, String... keys) { - client.sinterstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response sinterstore(byte[] dstkey, byte[]... keys) { - client.sinterstore(dstkey, keys); + getClient(key).setrange(key, offset, value); return getResponse(BuilderFactory.LONG); } public Response sismember(String key, String member) { - client.sismember(key, member); + getClient(key).sismember(key, member); return getResponse(BuilderFactory.BOOLEAN); } public Response sismember(byte[] key, byte[] member) { - client.sismember(key, member); + getClient(key).sismember(key, member); return getResponse(BuilderFactory.BOOLEAN); } public Response> smembers(String key) { - client.smembers(key); + getClient(key).smembers(key); return getResponse(BuilderFactory.STRING_SET); } public Response> smembers(byte[] key) { - client.smembers(key); + getClient(key).smembers(key); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } - public Response smove(String srckey, String dstkey, String member) { - client.smove(srckey, dstkey, member); - return getResponse(BuilderFactory.LONG); - } - - public Response smove(byte[] srckey, byte[] dstkey, byte[] member) { - client.smove(srckey, dstkey, member); - return getResponse(BuilderFactory.LONG); - } - public Response> sort(String key) { - client.sort(key); + getClient(key).sort(key); return getResponse(BuilderFactory.STRING_LIST); } public Response> sort(byte[] key) { - client.sort(key); + getClient(key).sort(key); return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response> sort(String key, SortingParams sortingParameters) { - client.sort(key, sortingParameters); + getClient(key).sort(key, sortingParameters); return getResponse(BuilderFactory.STRING_LIST); } public Response> sort(byte[] key, SortingParams sortingParameters) { - client.sort(key, sortingParameters); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> sort(String key, - SortingParams sortingParameters, String dstkey) { - client.sort(key, sortingParameters, dstkey); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(byte[] key, - SortingParams sortingParameters, byte[] dstkey) { - client.sort(key, sortingParameters, dstkey); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> sort(String key, String dstkey) { - client.sort(key, dstkey); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(byte[] key, byte[] dstkey) { - client.sort(key, dstkey); + getClient(key).sort(key, sortingParameters); return getResponse(BuilderFactory.BYTE_ARRAY_LIST); } public Response spop(String key) { - client.spop(key); + getClient(key).spop(key); return getResponse(BuilderFactory.STRING); } public Response spop(byte[] key) { - client.spop(key); + getClient(key).spop(key); return getResponse(BuilderFactory.BYTE_ARRAY); } public Response srandmember(String key) { - client.srandmember(key); + getClient(key).srandmember(key); return getResponse(BuilderFactory.STRING); } public Response srandmember(byte[] key) { - client.srandmember(key); + getClient(key).srandmember(key); return getResponse(BuilderFactory.BYTE_ARRAY); } public Response srem(String key, String member) { - client.srem(key, member); + getClient(key).srem(key, member); return getResponse(BuilderFactory.LONG); } public Response srem(byte[] key, byte[] member) { - client.srem(key, member); + getClient(key).srem(key, member); return getResponse(BuilderFactory.LONG); } public Response strlen(String key) { - client.strlen(key); + getClient(key).strlen(key); return getResponse(BuilderFactory.LONG); } public Response strlen(byte[] key) { - client.strlen(key); + getClient(key).strlen(key); return getResponse(BuilderFactory.LONG); } public Response substr(String key, int start, int end) { - client.substr(key, start, end); + getClient(key).substr(key, start, end); return getResponse(BuilderFactory.STRING); } public Response substr(byte[] key, int start, int end) { - client.substr(key, start, end); + getClient(key).substr(key, start, end); return getResponse(BuilderFactory.STRING); } - public Response> sunion(String... keys) { - client.sunion(keys); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> sunion(byte[]... keys) { - client.sunion(keys); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response sunionstore(String dstkey, String... keys) { - client.sunionstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - - public Response sunionstore(byte[] dstkey, byte[]... keys) { - client.sunionstore(dstkey, keys); - return getResponse(BuilderFactory.LONG); - } - public Response ttl(String key) { - client.ttl(key); + getClient(key).ttl(key); return getResponse(BuilderFactory.LONG); } public Response ttl(byte[] key) { - client.ttl(key); + getClient(key).ttl(key); return getResponse(BuilderFactory.LONG); } public Response type(String key) { - client.type(key); + getClient(key).type(key); return getResponse(BuilderFactory.STRING); } public Response type(byte[] key) { - client.type(key); - return getResponse(BuilderFactory.STRING); - } - - public Response watch(String... keys) { - client.watch(keys); - return getResponse(BuilderFactory.STRING); - } - - public Response watch(byte[]... keys) { - client.watch(keys); + getClient(key).type(key); return getResponse(BuilderFactory.STRING); } public Response zadd(String key, double score, String member) { - client.zadd(key, score, member); + getClient(key).zadd(key, score, member); return getResponse(BuilderFactory.LONG); } public Response zadd(byte[] key, double score, byte[] member) { - client.zadd(key, score, member); + getClient(key).zadd(key, score, member); return getResponse(BuilderFactory.LONG); } public Response zcard(String key) { - client.zcard(key); + getClient(key).zcard(key); return getResponse(BuilderFactory.LONG); } public Response zcard(byte[] key) { - client.zcard(key); + getClient(key).zcard(key); return getResponse(BuilderFactory.LONG); } public Response zcount(String key, double min, double max) { - client.zcount(key, min, max); + getClient(key).zcount(key, min, max); return getResponse(BuilderFactory.LONG); } public Response zcount(byte[] key, double min, double max) { - client.zcount(key, toByteArray(min), toByteArray(max)); + getClient(key).zcount(key, toByteArray(min), toByteArray(max)); return getResponse(BuilderFactory.LONG); } public Response zincrby(String key, double score, String member) { - client.zincrby(key, score, member); + getClient(key).zincrby(key, score, member); return getResponse(BuilderFactory.DOUBLE); } public Response zincrby(byte[] key, double score, byte[] member) { - client.zincrby(key, score, member); + getClient(key).zincrby(key, score, member); return getResponse(BuilderFactory.DOUBLE); } - public Response zinterstore(String dstkey, String... sets) { - client.zinterstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zinterstore(byte[] dstkey, byte[]... sets) { - client.zinterstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zinterstore(String dstkey, ZParams params, - String... sets) { - client.zinterstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zinterstore(byte[] dstkey, ZParams params, - byte[]... sets) { - client.zinterstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - public Response> zrange(String key, int start, int end) { - client.zrange(key, start, end); + getClient(key).zrange(key, start, end); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrange(byte[] key, int start, int end) { - client.zrange(key, start, end); + getClient(key).zrange(key, start, end); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeByScore(String key, double min, double max) { - client.zrangeByScore(key, min, max); + getClient(key).zrangeByScore(key, min, max); return getResponse(BuilderFactory.STRING_ZSET); } @@ -929,19 +712,19 @@ abstract class PipelineBase extends Queable implements public Response> zrangeByScore(String key, String min, String max) { - client.zrangeByScore(key, min, max); + getClient(key).zrangeByScore(key, min, max); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrangeByScore(byte[] key, byte[] min, byte[] max) { - client.zrangeByScore(key, min, max); + getClient(key).zrangeByScore(key, min, max); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeByScore(String key, double min, double max, int offset, int count) { - client.zrangeByScore(key, min, max, offset, count); + getClient(key).zrangeByScore(key, min, max, offset, count); return getResponse(BuilderFactory.STRING_ZSET); } @@ -952,13 +735,13 @@ abstract class PipelineBase extends Queable implements public Response> zrangeByScore(byte[] key, byte[] min, byte[] max, int offset, int count) { - client.zrangeByScore(key, min, max, offset, count); + getClient(key).zrangeByScore(key, min, max, offset, count); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrangeByScoreWithScores(String key, double min, double max) { - client.zrangeByScoreWithScores(key, min, max); + getClient(key).zrangeByScoreWithScores(key, min, max); return getResponse(BuilderFactory.TUPLE_ZSET); } @@ -969,354 +752,221 @@ abstract class PipelineBase extends Queable implements public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max) { - client.zrangeByScoreWithScores(key, min, max); + getClient(key).zrangeByScoreWithScores(key, min, max); return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrangeByScoreWithScores(String key, double min, double max, int offset, int count) { - client.zrangeByScoreWithScores(key, min, max, offset, count); + getClient(key).zrangeByScoreWithScores(key, min, max, offset, count); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrangeByScoreWithScores(byte[] key, double min, double max, int offset, int count) { - client.zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); + getClient(key).zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, int offset, int count) { - client.zrangeByScoreWithScores(key, min, max, offset, count); + getClient(key).zrangeByScoreWithScores(key, min, max, offset, count); return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrevrangeByScore(String key, double max, double min) { - client.zrevrangeByScore(key, max, min); + getClient(key).zrevrangeByScore(key, max, min); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScore(byte[] key, double max, double min) { - client.zrevrangeByScore(key, toByteArray(max), toByteArray(min)); + getClient(key).zrevrangeByScore(key, toByteArray(max), toByteArray(min)); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeByScore(String key, String max, String min) { - client.zrevrangeByScore(key, max, min); + getClient(key).zrevrangeByScore(key, max, min); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min) { - client.zrevrangeByScore(key, max, min); + getClient(key).zrevrangeByScore(key, max, min); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeByScore(String key, double max, double min, int offset, int count) { - client.zrevrangeByScore(key, max, min, offset, count); + getClient(key).zrevrangeByScore(key, max, min, offset, count); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrangeByScore(byte[] key, double max, double min, int offset, int count) { - client.zrevrangeByScore(key, toByteArray(max), toByteArray(min), offset, count); + getClient(key).zrevrangeByScore(key, toByteArray(max), toByteArray(min), offset, count); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min, int offset, int count) { - client.zrevrangeByScore(key, max, min, offset, count); + getClient(key).zrevrangeByScore(key, max, min, offset, count); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeByScoreWithScores(String key, double max, double min) { - client.zrevrangeByScoreWithScores(key, max, min); + getClient(key).zrevrangeByScoreWithScores(key, max, min); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min) { - client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min)); + getClient(key).zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min)); return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min) { - client.zrevrangeByScoreWithScores(key, max, min); + getClient(key).zrevrangeByScoreWithScores(key, max, min); return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrevrangeByScoreWithScores(String key, double max, double min, int offset, int count) { - client.zrevrangeByScoreWithScores(key, max, min, offset, count); + getClient(key).zrevrangeByScoreWithScores(key, max, min, offset, count); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min, int offset, int count) { - client.zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min), offset, count); + getClient(key).zrevrangeByScoreWithScores(key, toByteArray(max), toByteArray(min), offset, count); return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min, int offset, int count) { - client.zrevrangeByScoreWithScores(key, max, min, offset, count); + getClient(key).zrevrangeByScoreWithScores(key, max, min, offset, count); return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response> zrangeWithScores(String key, int start, int end) { - client.zrangeWithScores(key, start, end); + getClient(key).zrangeWithScores(key, start, end); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrangeWithScores(byte[] key, int start, int end) { - client.zrangeWithScores(key, start, end); + getClient(key).zrangeWithScores(key, start, end); return getResponse(BuilderFactory.TUPLE_ZSET_BINARY); } public Response zrank(String key, String member) { - client.zrank(key, member); + getClient(key).zrank(key, member); return getResponse(BuilderFactory.LONG); } public Response zrank(byte[] key, byte[] member) { - client.zrank(key, member); + getClient(key).zrank(key, member); return getResponse(BuilderFactory.LONG); } public Response zrem(String key, String member) { - client.zrem(key, member); + getClient(key).zrem(key, member); return getResponse(BuilderFactory.LONG); } public Response zrem(byte[] key, byte[] member) { - client.zrem(key, member); + getClient(key).zrem(key, member); return getResponse(BuilderFactory.LONG); } public Response zremrangeByRank(String key, int start, int end) { - client.zremrangeByRank(key, start, end); + getClient(key).zremrangeByRank(key, start, end); return getResponse(BuilderFactory.LONG); } public Response zremrangeByRank(byte[] key, int start, int end) { - client.zremrangeByRank(key, start, end); + getClient(key).zremrangeByRank(key, start, end); return getResponse(BuilderFactory.LONG); } public Response zremrangeByScore(String key, double start, double end) { - client.zremrangeByScore(key, start, end); + getClient(key).zremrangeByScore(key, start, end); return getResponse(BuilderFactory.LONG); } public Response zremrangeByScore(byte[] key, double start, double end) { - client.zremrangeByScore(key, toByteArray(start), toByteArray(end)); + getClient(key).zremrangeByScore(key, toByteArray(start), toByteArray(end)); return getResponse(BuilderFactory.LONG); } public Response zremrangeByScore(byte[] key, byte[] start, byte[] end) { - client.zremrangeByScore(key, start, end); + getClient(key).zremrangeByScore(key, start, end); return getResponse(BuilderFactory.LONG); } public Response> zrevrange(String key, int start, int end) { - client.zrevrange(key, start, end); + getClient(key).zrevrange(key, start, end); return getResponse(BuilderFactory.STRING_ZSET); } public Response> zrevrange(byte[] key, int start, int end) { - client.zrevrange(key, start, end); + getClient(key).zrevrange(key, start, end); return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); } public Response> zrevrangeWithScores(String key, int start, int end) { - client.zrevrangeWithScores(key, start, end); + getClient(key).zrevrangeWithScores(key, start, end); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response> zrevrangeWithScores(byte[] key, int start, int end) { - client.zrevrangeWithScores(key, start, end); + getClient(key).zrevrangeWithScores(key, start, end); return getResponse(BuilderFactory.TUPLE_ZSET); } public Response zrevrank(String key, String member) { - client.zrevrank(key, member); + getClient(key).zrevrank(key, member); return getResponse(BuilderFactory.LONG); } public Response zrevrank(byte[] key, byte[] member) { - client.zrevrank(key, member); + getClient(key).zrevrank(key, member); return getResponse(BuilderFactory.LONG); } public Response zscore(String key, String member) { - client.zscore(key, member); + getClient(key).zscore(key, member); return getResponse(BuilderFactory.DOUBLE); } public Response zscore(byte[] key, byte[] member) { - client.zscore(key, member); + getClient(key).zscore(key, member); return getResponse(BuilderFactory.DOUBLE); } - public Response zunionstore(String dstkey, String... sets) { - client.zunionstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zunionstore(byte[] dstkey, byte[]... sets) { - client.zunionstore(dstkey, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zunionstore(String dstkey, ZParams params, - String... sets) { - client.zunionstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response zunionstore(byte[] dstkey, ZParams params, - byte[]... sets) { - client.zunionstore(dstkey, params, sets); - return getResponse(BuilderFactory.LONG); - } - - public Response bgrewriteaof() { - client.bgrewriteaof(); - return getResponse(BuilderFactory.STRING); - } - - public Response bgsave() { - client.bgsave(); - return getResponse(BuilderFactory.STRING); - } - - public Response configGet(String pattern) { - client.configGet(pattern); - return getResponse(BuilderFactory.STRING); - } - - public Response configSet(String parameter, String value) { - client.configSet(parameter, value); - return getResponse(BuilderFactory.STRING); - } - - public Response brpoplpush(String source, String destination, - int timeout) { - client.brpoplpush(source, destination, timeout); - return getResponse(BuilderFactory.STRING); - } - - public Response brpoplpush(byte[] source, byte[] destination, - int timeout) { - client.brpoplpush(source, destination, timeout); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response configResetStat() { - client.configResetStat(); - return getResponse(BuilderFactory.STRING); - } - - public Response save() { - client.save(); - return getResponse(BuilderFactory.STRING); - } - - public Response lastsave() { - client.lastsave(); - return getResponse(BuilderFactory.LONG); - } - - public Response publish(String channel, String message) { - client.publish(channel, message); - return getResponse(BuilderFactory.LONG); - } - - public Response publish(byte[] channel, byte[] message) { - client.publish(channel, message); - return getResponse(BuilderFactory.LONG); - } - - public Response randomKey() { - client.randomKey(); - return getResponse(BuilderFactory.STRING); - } - - public Response randomKeyBinary() { - client.randomKey(); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response flushDB() { - client.flushDB(); - return getResponse(BuilderFactory.STRING); - } - - public Response flushAll() { - client.flushAll(); - return getResponse(BuilderFactory.STRING); - } - - public Response info() { - client.info(); - return getResponse(BuilderFactory.STRING); - } - - public Response dbSize() { - client.dbSize(); - return getResponse(BuilderFactory.LONG); - } - - public Response shutdown() { - client.shutdown(); - return getResponse(BuilderFactory.STRING); - } - - public Response ping() { - client.ping(); - return getResponse(BuilderFactory.STRING); - } - - public Response select(int index) { - client.select(index); - return getResponse(BuilderFactory.STRING); - } - public Response bitcount(String key) { - client.bitcount(key); + getClient(key).bitcount(key); return getResponse(BuilderFactory.LONG); } public Response bitcount(String key, long start, long end) { - client.bitcount(key, start, end); + getClient(key).bitcount(key, start, end); return getResponse(BuilderFactory.LONG); } public Response bitcount(byte[] key) { - client.bitcount(key); + getClient(key).bitcount(key); return getResponse(BuilderFactory.LONG); } public Response bitcount(byte[] key, long start, long end) { - client.bitcount(key, start, end); + getClient(key).bitcount(key, start, end); return getResponse(BuilderFactory.LONG); } - public Response bitop(BitOP op, byte[] destKey, byte[]... srcKeys) { - client.bitop(op, destKey, srcKeys); - return getResponse(BuilderFactory.LONG); - } - - public Response bitop(BitOP op, String destKey, String... srcKeys) { - client.bitop(op, destKey, srcKeys); - return getResponse(BuilderFactory.LONG); - } } diff --git a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java index 2601f9c..be6db92 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java +++ b/src/main/java/redis/clients/jedis/ShardedJedisPipeline.java @@ -1,12 +1,11 @@ package redis.clients.jedis; -import redis.clients.jedis.BinaryClient.LIST_POSITION; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Queue; -import java.util.*; - -import static redis.clients.jedis.Protocol.toByteArray; - -public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline, RedisPipeline { +public class ShardedJedisPipeline extends PipelineBase { private BinaryShardedJedis jedis; private List results = new ArrayList(); private Queue clients = new LinkedList(); @@ -27,1289 +26,6 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline this.jedis = jedis; } - public Response set(String key, String value) { - Client c = getClient(key); - c.set(key, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response set(byte[] key, byte[] value) { - Client c = getClient(key); - c.set(key, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response get(String key) { - Client c = getClient(key); - c.get(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response get(byte[] key) { - Client c = getClient(key); - c.get(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response> blpop(byte[] arg) { - byte[][] temp = new byte[1][]; - temp[0] = arg; - Client c = getClient(arg); - c.blpop(temp); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> brpop(byte[] arg) { - byte[][] temp = new byte[1][]; - temp[0] = arg; - Client c = getClient(arg); - c.blpop(temp); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> blpop(String arg) { - String[] temp = new String[1]; - temp[0] = arg; - Client c = getClient(arg); - c.blpop(temp); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> brpop(String arg) { - String[] temp = new String[1]; - temp[0] = arg; - Client c = getClient(arg); - c.brpop(temp); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response move(byte[] key, int dbIndex) { - Client c = getClient(key); - c.move(key, dbIndex); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response move(String key, int dbIndex) { - Client c = getClient(key); - c.move(key, dbIndex); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response echo(byte[] string) { - Client c = getClient(string); - c.echo(string); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response echo(String string) { - Client c = getClient(string); - c.echo(string); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response del(byte[] key) { - Client c = getClient(key); - c.del(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response del(String key) { - Client c = getClient(key); - c.del(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response exists(String key) { - Client c = getClient(key); - c.exists(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response exists(byte[] key) { - Client c = getClient(key); - c.exists(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response type(String key) { - Client c = getClient(key); - c.type(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response type(byte[] key) { - Client c = getClient(key); - c.type(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response expire(String key, int seconds) { - Client c = getClient(key); - c.expire(key, seconds); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response expire(byte[] key, int seconds) { - Client c = getClient(key); - c.expire(key, seconds); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response expireAt(String key, long unixTime) { - Client c = getClient(key); - c.expireAt(key, unixTime); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response expireAt(byte[] key, long unixTime) { - Client c = getClient(key); - c.expireAt(key, unixTime); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response ttl(String key) { - Client c = getClient(key); - c.ttl(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response ttl(byte[] key) { - Client c = getClient(key); - c.ttl(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response getSet(String key, String value) { - Client c = getClient(key); - c.getSet(key, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response getSet(byte[] key, byte[] value) { - Client c = getClient(key); - c.getSet(key, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response setnx(String key, String value) { - Client c = getClient(key); - c.setnx(key, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response setnx(byte[] key, byte[] value) { - Client c = getClient(key); - c.setnx(key, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response setex(String key, int seconds, String value) { - Client c = getClient(key); - c.setex(key, seconds, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response setex(byte[] key, int seconds, byte[] value) { - Client c = getClient(key); - c.setex(key, seconds, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response decrBy(String key, long integer) { - Client c = getClient(key); - c.decrBy(key, integer); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response decrBy(byte[] key, long integer) { - Client c = getClient(key); - c.decrBy(key, integer); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response decr(String key) { - Client c = getClient(key); - c.decr(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response decr(byte[] key) { - Client c = getClient(key); - c.decr(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response incrBy(String key, long integer) { - Client c = getClient(key); - c.incrBy(key, integer); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response incrBy(byte[] key, long integer) { - Client c = getClient(key); - c.incrBy(key, integer); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response incr(String key) { - Client c = getClient(key); - c.incr(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response incr(byte[] key) { - Client c = getClient(key); - c.incr(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response append(String key, String value) { - Client c = getClient(key); - c.append(key, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response append(byte[] key, byte[] value) { - Client c = getClient(key); - c.append(key, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response substr(String key, int start, int end) { - Client c = getClient(key); - c.substr(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response substr(byte[] key, int start, int end) { - Client c = getClient(key); - c.substr(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response hset(String key, String field, String value) { - Client c = getClient(key); - c.hset(key, field, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response hset(byte[] key, byte[] field, byte[] value) { - Client c = getClient(key); - c.hset(key, field, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response hget(String key, String field) { - Client c = getClient(key); - c.hget(key, field); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response hget(byte[] key, byte[] field) { - Client c = getClient(key); - c.hget(key, field); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response hsetnx(String key, String field, String value) { - Client c = getClient(key); - c.hsetnx(key, field, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response hsetnx(byte[] key, byte[] field, byte[] value) { - Client c = getClient(key); - c.hsetnx(key, field, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response hmset(String key, Map hash) { - Client c = getClient(key); - c.hmset(key, hash); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response hmset(byte[] key, Map hash) { - Client c = getClient(key); - c.hmset(key, hash); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response> hmget(String key, String... fields) { - Client c = getClient(key); - c.hmget(key, fields); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> hmget(byte[] key, byte[]... fields) { - Client c = getClient(key); - c.hmget(key, fields); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response hincrBy(String key, String field, long value) { - Client c = getClient(key); - c.hincrBy(key, field, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response hincrBy(byte[] key, byte[] field, long value) { - Client c = getClient(key); - c.hincrBy(key, field, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response hexists(String key, String field) { - Client c = getClient(key); - c.hexists(key, field); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response hexists(byte[] key, byte[] field) { - Client c = getClient(key); - c.hexists(key, field); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response hdel(String key, String field) { - Client c = getClient(key); - c.hdel(key, field); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response hdel(byte[] key, byte[] field) { - Client c = getClient(key); - c.hdel(key, field); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response hlen(String key) { - Client c = getClient(key); - c.hlen(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response hlen(byte[] key) { - Client c = getClient(key); - c.hlen(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response> hkeys(String key) { - Client c = getClient(key); - c.hkeys(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> hkeys(byte[] key) { - Client c = getClient(key); - c.hkeys(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> hvals(String key) { - Client c = getClient(key); - c.hvals(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> hvals(byte[] key) { - Client c = getClient(key); - c.hvals(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> hgetAll(String key) { - Client c = getClient(key); - c.hgetAll(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_MAP); - } - - public Response> hgetAll(byte[] key) { - Client c = getClient(key); - c.hgetAll(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_MAP); - } - - public Response rpush(String key, String string) { - Client c = getClient(key); - c.rpush(key, string); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response rpush(byte[] key, byte[] string) { - Client c = getClient(key); - c.rpush(key, string); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response rpushx(String key, String string) { - Client c = getClient(key); - c.rpushx(key, string); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response rpushx(byte[] key, byte[] string) { - Client c = getClient(key); - c.rpushx(key, string); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response lpush(String key, String string) { - Client c = getClient(key); - c.lpush(key, string); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response lpush(byte[] key, byte[] string) { - Client c = getClient(key); - c.lpush(key, string); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response lpushx(String key, String string) { - Client c = getClient(key); - c.lpushx(key, string); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response lpushx(byte[] key, byte[] bytes) { - Client c = getClient(key); - c.lpushx(key, bytes); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response llen(String key) { - Client c = getClient(key); - c.llen(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response llen(byte[] key) { - Client c = getClient(key); - c.llen(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response> lrange(String key, long start, long end) { - Client c = getClient(key); - c.lrange(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> lrange(byte[] key, long start, long end) { - Client c = getClient(key); - c.lrange(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response ltrim(String key, long start, long end) { - Client c = getClient(key); - c.ltrim(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response ltrim(byte[] key, long start, long end) { - Client c = getClient(key); - c.ltrim(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response persist(String key) { - Client c = getClient(key); - c.persist(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response persist(byte[] key) { - Client c = getClient(key); - c.persist(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response lindex(String key, int index) { - Client c = getClient(key); - c.lindex(key, index); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response lindex(byte[] key, int index) { - Client c = getClient(key); - c.lindex(key, index); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response lset(String key, long index, String value) { - Client c = getClient(key); - c.lset(key, index, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response lset(byte[] key, long index, byte[] value) { - Client c = getClient(key); - c.lset(key, index, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response lrem(String key, long count, String value) { - Client c = getClient(key); - c.lrem(key, count, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response lrem(byte[] key, long count, byte[] value) { - Client c = getClient(key); - c.lrem(key, count, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response lpop(String key) { - Client c = getClient(key); - c.lpop(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response lpop(byte[] key) { - Client c = getClient(key); - c.lpop(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response rpop(String key) { - Client c = getClient(key); - c.rpop(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response rpop(byte[] key) { - Client c = getClient(key); - c.rpop(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response sadd(String key, String member) { - Client c = getClient(key); - c.sadd(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response sadd(byte[] key, byte[] member) { - Client c = getClient(key); - c.sadd(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response> smembers(String key) { - Client c = getClient(key); - c.smembers(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> smembers(byte[] key) { - Client c = getClient(key); - c.smembers(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response srem(String key, String member) { - Client c = getClient(key); - c.srem(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response srem(byte[] key, byte[] member) { - Client c = getClient(key); - c.srem(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response strlen(String key) { - Client c = getClient(key); - c.strlen(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response strlen(byte[] key) { - Client c = getClient(key); - c.strlen(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response spop(String key) { - Client c = getClient(key); - c.spop(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response spop(byte[] key) { - Client c = getClient(key); - c.spop(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response scard(String key) { - Client c = getClient(key); - c.scard(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response scard(byte[] key) { - Client c = getClient(key); - c.scard(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response sismember(String key, String member) { - Client c = getClient(key); - c.sismember(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response sismember(byte[] key, byte[] member) { - Client c = getClient(key); - c.sismember(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response srandmember(String key) { - Client c = getClient(key); - c.srandmember(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response srandmember(byte[] key) { - Client c = getClient(key); - c.srandmember(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY); - } - - public Response zadd(String key, double score, String member) { - Client c = getClient(key); - c.zadd(key, score, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zadd(byte[] key, double score, byte[] member) { - Client c = getClient(key); - c.zadd(key, score, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response> zrange(String key, int start, int end) { - Client c = getClient(key); - c.zrange(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrange(byte[] key, int start, int end) { - Client c = getClient(key); - c.zrange(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response zrem(String key, String member) { - Client c = getClient(key); - c.zrem(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zrem(byte[] key, byte[] member) { - Client c = getClient(key); - c.zrem(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zincrby(String key, double score, String member) { - Client c = getClient(key); - c.zincrby(key, score, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zincrby(byte[] key, double score, byte[] member) { - Client c = getClient(key); - c.zincrby(key, score, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zrank(String key, String member) { - Client c = getClient(key); - c.zrank(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zrank(byte[] key, byte[] member) { - Client c = getClient(key); - c.zrank(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zrevrank(String key, String member) { - Client c = getClient(key); - c.zrevrank(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zrevrank(byte[] key, byte[] member) { - Client c = getClient(key); - c.zrevrank(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response> zrevrange(String key, int start, int end) { - Client c = getClient(key); - c.zrevrange(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrevrange(byte[] key, int start, int end) { - Client c = getClient(key); - c.zrevrange(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeWithScores(String key, int start, int end) { - Client c = getClient(key); - c.zrangeWithScores(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeWithScores(byte[] key, int start, int end) { - Client c = getClient(key); - c.zrangeWithScores(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeWithScores(String key, int start, int end) { - Client c = getClient(key); - c.zrevrangeWithScores(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeWithScores(byte[] key, int start, int end) { - Client c = getClient(key); - c.zrevrangeWithScores(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response zcard(String key) { - Client c = getClient(key); - c.zcard(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zcard(byte[] key) { - Client c = getClient(key); - c.zcard(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zscore(String key, String member) { - Client c = getClient(key); - c.zscore(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response zscore(byte[] key, byte[] member) { - Client c = getClient(key); - c.zscore(key, member); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.DOUBLE); - } - - public Response> sort(String key) { - Client c = getClient(key); - c.sort(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(byte[] key) { - Client c = getClient(key); - c.sort(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response> sort(String key, SortingParams sortingParameters) { - Client c = getClient(key); - c.sort(key, sortingParameters); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_LIST); - } - - public Response> sort(byte[] key, SortingParams sortingParameters) { - Client c = getClient(key); - c.sort(key, sortingParameters); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_LIST); - } - - public Response zcount(String key, double min, double max) { - Client c = getClient(key); - c.zcount(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zcount(byte[] key, double min, double max) { - Client c = getClient(key); - c.zcount(key, toByteArray(min), toByteArray(max)); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response> zrevrangeByScore(String key, String max, String min) { - Client c = getClient(key); - c.zrevrangeByScore(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrevrangeByScore(String key, double max, double min) { - Client c = getClient(key); - c.zrevrangeByScore(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrevrangeByScore(byte[] key, double max, double min) { - Client c = getClient(key); - c.zrevrangeByScore(key, toByteArray(min), toByteArray(max)); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min) { - Client c = getClient(key); - c.zrevrangeByScore(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrevrangeByScore(String key, double max, double min, int offset, int count) { - Client c = getClient(key); - c.zrevrangeByScore(key, min, max, offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrevrangeByScore(byte[] key, double max, double min, int offset, int count) { - Client c = getClient(key); - c.zrevrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrevrangeByScore(byte[] key, byte[] max, byte[] min, int offset, int count) { - Client c = getClient(key); - c.zrevrangeByScore(key, min, max, offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScore(String key, String min, String max) { - Client c = getClient(key); - c.zrangeByScore(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScore(String key, double min, double max) { - Client c = getClient(key); - c.zrangeByScore(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScore(byte[] key, double min, double max) { - Client c = getClient(key); - c.zrangeByScore(key, toByteArray(min), toByteArray(max)); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScore(byte[] key, byte[] min, byte[] max) { - Client c = getClient(key); - c.zrangeByScore(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScore(String key, double min, double max, - int offset, int count) { - Client c = getClient(key); - c.zrangeByScore(key, min, max, offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING_ZSET); - } - - public Response> zrangeByScore(byte[] key, double min, double max, - int offset, int count) { - Client c = getClient(key); - c.zrangeByScore(key, toByteArray(min), toByteArray(max), offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScore(byte[] key, byte[] min, byte[] max, - int offset, int count) { - Client c = getClient(key); - c.zrangeByScore(key, min, max, offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - - public Response> zrangeByScoreWithScores(String key, double min, double max) { - Client c = getClient(key); - c.zrangeByScoreWithScores(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeByScoreWithScores(byte[] key, double min, double max) { - Client c = getClient(key); - c.zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max)); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max) { - Client c = getClient(key); - c.zrangeByScoreWithScores(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeByScoreWithScores(String key, double min, double max, - int offset, int count) { - Client c = getClient(key); - c.zrangeByScoreWithScores(key, min, max, offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeByScoreWithScores(byte[] key, double min, double max, - int offset, int count) { - Client c = getClient(key); - c.zrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max, - int offset, int count) { - Client c = getClient(key); - c.zrangeByScoreWithScores(key, min, max, offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeByScoreWithScores(String key, double max, double min) { - Client c = getClient(key); - c.zrevrangeByScoreWithScores(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min) { - Client c = getClient(key); - c.zrevrangeByScoreWithScores(key, toByteArray(min), toByteArray(max)); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min) { - Client c = getClient(key); - c.zrevrangeByScoreWithScores(key, min, max); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeByScoreWithScores(String key, double max, double min, int offset, int count) { - Client c = getClient(key); - c.zrevrangeByScoreWithScores(key, min, max, offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeByScoreWithScores(byte[] key, double max, double min, int offset, int count) { - Client c = getClient(key); - c.zrevrangeByScoreWithScores(key, toByteArray(min), toByteArray(max), offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min, int offset, int count) { - Client c = getClient(key); - c.zrevrangeByScoreWithScores(key, min, max, offset, count); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.TUPLE_ZSET); - } - - public Response zremrangeByRank(String key, int start, int end) { - Client c = getClient(key); - c.zremrangeByRank(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByRank(byte[] key, int start, int end) { - Client c = getClient(key); - c.zremrangeByRank(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByScore(String key, double start, double end) { - Client c = getClient(key); - c.zremrangeByScore(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByScore(byte[] key, double start, double end) { - Client c = getClient(key); - c.zremrangeByScore(key, toByteArray(start), toByteArray(end)); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response zremrangeByScore(byte[] key, byte[] start, byte[] end) { - Client c = getClient(key); - c.zremrangeByScore(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response linsert(String key, LIST_POSITION where, String pivot, - String value) { - Client c = getClient(key); - c.linsert(key, where, pivot, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response linsert(byte[] key, LIST_POSITION where, byte[] pivot, - byte[] value) { - Client c = getClient(key); - c.linsert(key, where, pivot, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response getbit(String key, long offset) { - Client c = getClient(key); - c.getbit(key, offset); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response getbit(byte[] key, long offset) { - Client c = getClient(key); - c.getbit(key, offset); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response setbit(String key, long offset, boolean value) { - Client c = getClient(key); - c.setbit(key, offset, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response setbit(byte[] key, long offset, byte[] value) { - Client c = getClient(key); - c.setbit(key, offset, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.BOOLEAN); - } - - public Response setrange(String key, long offset, String value) { - Client c = getClient(key); - c.setrange(key, offset, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response setrange(byte[] key, long offset, byte[] value) { - Client c = getClient(key); - c.setrange(key, offset, value); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response getrange(String key, long startOffset, long endOffset) { - Client c = getClient(key); - c.getrange(key, startOffset, endOffset); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.STRING); - } - - public Response getrange(byte[] key, long startOffset, long endOffset) { - Client c = getClient(key); - c.getrange(key, startOffset, endOffset); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response bitcount(String key) { - Client c = getClient(key); - c.bitcount(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response bitcount(String key, long start, long end) { - Client c = getClient(key); - c.bitcount(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response bitcount(byte[] key) { - Client c = getClient(key); - c.bitcount(key); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - - public Response bitcount(byte[] key, long start, long end) { - Client c = getClient(key); - c.bitcount(key, start, end); - results.add(new FutureResult(c)); - return getResponse(BuilderFactory.LONG); - } - public List getResults() { List r = new ArrayList(); for (FutureResult fr : results) { @@ -1353,15 +69,19 @@ public class ShardedJedisPipeline extends Queable implements BinaryRedisPipeline public void execute() { } - private Client getClient(String key) { + @Override + protected Client getClient(String key) { Client client = jedis.getShard(key).getClient(); clients.add(client); + results.add(new FutureResult(client)); return client; } - private Client getClient(byte[] key) { + @Override + protected Client getClient(byte[] key) { Client client = jedis.getShard(key).getClient(); clients.add(client); + results.add(new FutureResult(client)); return client; } } \ No newline at end of file diff --git a/src/main/java/redis/clients/jedis/Transaction.java b/src/main/java/redis/clients/jedis/Transaction.java index 1629b59..bca7157 100644 --- a/src/main/java/redis/clients/jedis/Transaction.java +++ b/src/main/java/redis/clients/jedis/Transaction.java @@ -8,7 +8,7 @@ import java.util.List; /** * Transaction is nearly identical to Pipeline, only differences are the multi/discard behaviors */ -public class Transaction extends PipelineBase { +public class Transaction extends MultiKeyPipelineBase { protected boolean inTransaction = true; @@ -20,6 +20,16 @@ public class Transaction extends PipelineBase { this.client = client; } + @Override + protected Client getClient(String key) { + return client; + } + + @Override + protected Client getClient(byte[] key) { + return client; + } + public List exec() { client.exec(); client.getAll(1); // Discard all but the last reply diff --git a/src/main/java/redis/clients/jedis/TransactionBlock.java b/src/main/java/redis/clients/jedis/TransactionBlock.java index 87df232..e784e19 100644 --- a/src/main/java/redis/clients/jedis/TransactionBlock.java +++ b/src/main/java/redis/clients/jedis/TransactionBlock.java @@ -13,6 +13,6 @@ public abstract class TransactionBlock extends Transaction { public abstract void execute() throws JedisException; public void setClient(Client client) { - this.client = client; + this.client = client; } } From 258ac300fce65be8caaf6a91eda2f5a5f2612b05 Mon Sep 17 00:00:00 2001 From: samhendley Date: Thu, 10 Jan 2013 02:39:48 -0500 Subject: [PATCH 19/23] added variadic versions of lpush/rpush(x) functions --- .../redis/clients/jedis/BinaryClient.java | 8 ++--- .../java/redis/clients/jedis/BinaryJedis.java | 4 +-- .../clients/jedis/BinaryJedisCommands.java | 4 +-- .../clients/jedis/BinaryRedisPipeline.java | 10 +++---- .../clients/jedis/BinaryShardedJedis.java | 4 +-- src/main/java/redis/clients/jedis/Client.java | 8 ++--- .../java/redis/clients/jedis/Commands.java | 4 +-- src/main/java/redis/clients/jedis/Jedis.java | 4 +-- .../redis/clients/jedis/JedisCommands.java | 4 +-- .../redis/clients/jedis/PipelineBase.java | 30 +++++++------------ .../redis/clients/jedis/RedisPipeline.java | 10 +++---- .../redis/clients/jedis/ShardedJedis.java | 4 +-- 12 files changed, 42 insertions(+), 52 deletions(-) diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index 34fe202..032a2c1 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -677,16 +677,16 @@ public class BinaryClient extends Connection { sendCommand(SYNC); } - public void lpushx(final byte[] key, final byte[] string) { - sendCommand(LPUSHX, key, string); + public void lpushx(final byte[] key, final byte[]... string) { + sendCommand(LPUSHX, joinParameters(key, string)); } public void persist(final byte[] key) { sendCommand(PERSIST, key); } - public void rpushx(final byte[] key, final byte[] string) { - sendCommand(RPUSHX, key, string); + public void rpushx(final byte[] key, final byte[]... string) { + sendCommand(RPUSHX, joinParameters(key, string)); } public void echo(final byte[] string) { diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 06a83de..d4d0a08 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -2979,7 +2979,7 @@ public class BinaryJedis implements BasicCommands, BinaryJedisCommands, MultiKey client.sync(); } - public Long lpushx(final byte[] key, final byte[] string) { + public Long lpushx(final byte[] key, final byte[]... string) { client.lpushx(key, string); return client.getIntegerReply(); } @@ -2999,7 +2999,7 @@ public class BinaryJedis implements BasicCommands, BinaryJedisCommands, MultiKey return client.getIntegerReply(); } - public Long rpushx(final byte[] key, final byte[] string) { + public Long rpushx(final byte[] key, final byte[]... string) { client.rpushx(key, string); return client.getIntegerReply(); } diff --git a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java index a6da912..35e1879 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedisCommands.java +++ b/src/main/java/redis/clients/jedis/BinaryJedisCommands.java @@ -196,9 +196,9 @@ public interface BinaryJedisCommands { Long linsert(byte[] key, Client.LIST_POSITION where, byte[] pivot, byte[] value); - Long lpushx(byte[] key, byte[] arg); + Long lpushx(byte[] key, byte[]... arg); - Long rpushx(byte[] key, byte[] arg); + Long rpushx(byte[] key, byte[]... arg); List blpop(byte[] arg); diff --git a/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java index 5c04491..6f4fd90 100644 --- a/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java +++ b/src/main/java/redis/clients/jedis/BinaryRedisPipeline.java @@ -73,9 +73,9 @@ public interface BinaryRedisPipeline { Response lpop(byte[] key); - Response lpush(byte[] key, byte[] string); + Response lpush(byte[] key, byte[]... string); - Response lpushx(byte[] key, byte[] bytes); + Response lpushx(byte[] key, byte[]... bytes); Response> lrange(byte[] key, long start, long end); @@ -91,11 +91,11 @@ public interface BinaryRedisPipeline { Response rpop(byte[] key); - Response rpush(byte[] key, byte[] string); + Response rpush(byte[] key, byte[]... string); - Response rpushx(byte[] key, byte[] string); + Response rpushx(byte[] key, byte[]... string); - Response sadd(byte[] key, byte[] member); + Response sadd(byte[] key, byte[]... member); Response scard(byte[] key); diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java index 20065d7..2723aa1 100644 --- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java @@ -201,7 +201,7 @@ public class BinaryShardedJedis extends Sharded return j.strlen(key); } - public Long lpushx(byte[] key, byte[] string) { + public Long lpushx(byte[] key, byte[]... string) { Jedis j = getShard(key); return j.lpushx(key, string); } @@ -211,7 +211,7 @@ public class BinaryShardedJedis extends Sharded return j.persist(key); } - public Long rpushx(byte[] key, byte[] string) { + public Long rpushx(byte[] key, byte[]... string) { Jedis j = getShard(key); return j.rpushx(key, string); } diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java index 9e17202..f331f5e 100644 --- a/src/main/java/redis/clients/jedis/Client.java +++ b/src/main/java/redis/clients/jedis/Client.java @@ -564,16 +564,16 @@ public class Client extends BinaryClient implements Commands { strlen(SafeEncoder.encode(key)); } - public void lpushx(final String key, final String string) { - lpushx(SafeEncoder.encode(key), SafeEncoder.encode(string)); + public void lpushx(final String key, final String... string) { + lpushx(SafeEncoder.encode(key), getByteParams(string)); } public void persist(final String key) { persist(SafeEncoder.encode(key)); } - public void rpushx(final String key, final String string) { - rpushx(SafeEncoder.encode(key), SafeEncoder.encode(string)); + public void rpushx(final String key, final String... string) { + rpushx(SafeEncoder.encode(key), getByteParams(string)); } public void echo(final String string) { diff --git a/src/main/java/redis/clients/jedis/Commands.java b/src/main/java/redis/clients/jedis/Commands.java index a5df878..7d0e60d 100644 --- a/src/main/java/redis/clients/jedis/Commands.java +++ b/src/main/java/redis/clients/jedis/Commands.java @@ -251,11 +251,11 @@ public interface Commands { public void strlen(final String key); - public void lpushx(final String key, final String string); + public void lpushx(final String key, final String... string); public void persist(final String key); - public void rpushx(final String key, final String string); + public void rpushx(final String key, final String... string); public void echo(final String string); diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index d8dbb56..39f26d2 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2535,7 +2535,7 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return client.getIntegerReply(); } - public Long lpushx(final String key, final String string) { + public Long lpushx(final String key, final String... string) { client.lpushx(key, string); return client.getIntegerReply(); } @@ -2555,7 +2555,7 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand return client.getIntegerReply(); } - public Long rpushx(final String key, final String string) { + public Long rpushx(final String key, final String... string) { client.rpushx(key, string); return client.getIntegerReply(); } diff --git a/src/main/java/redis/clients/jedis/JedisCommands.java b/src/main/java/redis/clients/jedis/JedisCommands.java index 2dab095..ea5016b 100644 --- a/src/main/java/redis/clients/jedis/JedisCommands.java +++ b/src/main/java/redis/clients/jedis/JedisCommands.java @@ -193,9 +193,9 @@ public interface JedisCommands { Long linsert(String key, Client.LIST_POSITION where, String pivot, String value); - Long lpushx(String key, String string); + Long lpushx(String key, String... string); - Long rpushx(String key, String string); + Long rpushx(String key, String... string); List blpop(String arg); diff --git a/src/main/java/redis/clients/jedis/PipelineBase.java b/src/main/java/redis/clients/jedis/PipelineBase.java index 2af0899..2ceeeec 100644 --- a/src/main/java/redis/clients/jedis/PipelineBase.java +++ b/src/main/java/redis/clients/jedis/PipelineBase.java @@ -305,16 +305,6 @@ abstract class PipelineBase extends Queable implements return getResponse(BuilderFactory.LONG); } - public Response> keys(String pattern) { - getClient(pattern).keys(pattern); - return getResponse(BuilderFactory.STRING_SET); - } - - public Response> keys(byte[] pattern) { - getClient(pattern).keys(pattern); - return getResponse(BuilderFactory.BYTE_ARRAY_ZSET); - } - public Response lindex(String key, int index) { getClient(key).lindex(key, index); return getResponse(BuilderFactory.STRING); @@ -357,22 +347,22 @@ abstract class PipelineBase extends Queable implements return getResponse(BuilderFactory.BYTE_ARRAY); } - public Response lpush(String key, String string) { + public Response lpush(String key, String... string) { getClient(key).lpush(key, string); return getResponse(BuilderFactory.LONG); } - public Response lpush(byte[] key, byte[] string) { + public Response lpush(byte[] key, byte[]... string) { getClient(key).lpush(key, string); return getResponse(BuilderFactory.LONG); } - public Response lpushx(String key, String string) { + public Response lpushx(String key, String... string) { getClient(key).lpushx(key, string); return getResponse(BuilderFactory.LONG); } - public Response lpushx(byte[] key, byte[] bytes) { + public Response lpushx(byte[] key, byte[]... bytes) { getClient(key).lpushx(key, bytes); return getResponse(BuilderFactory.LONG); } @@ -447,32 +437,32 @@ abstract class PipelineBase extends Queable implements return getResponse(BuilderFactory.BYTE_ARRAY); } - public Response rpush(String key, String string) { + public Response rpush(String key, String... string) { getClient(key).rpush(key, string); return getResponse(BuilderFactory.LONG); } - public Response rpush(byte[] key, byte[] string) { + public Response rpush(byte[] key, byte[]... string) { getClient(key).rpush(key, string); return getResponse(BuilderFactory.LONG); } - public Response rpushx(String key, String string) { + public Response rpushx(String key, String... string) { getClient(key).rpushx(key, string); return getResponse(BuilderFactory.LONG); } - public Response rpushx(byte[] key, byte[] string) { + public Response rpushx(byte[] key, byte[]... string) { getClient(key).rpushx(key, string); return getResponse(BuilderFactory.LONG); } - public Response sadd(String key, String member) { + public Response sadd(String key, String... member) { getClient(key).sadd(key, member); return getResponse(BuilderFactory.LONG); } - public Response sadd(byte[] key, byte[] member) { + public Response sadd(byte[] key, byte[]... member) { getClient(key).sadd(key, member); return getResponse(BuilderFactory.LONG); } diff --git a/src/main/java/redis/clients/jedis/RedisPipeline.java b/src/main/java/redis/clients/jedis/RedisPipeline.java index b1c8461..43b7516 100644 --- a/src/main/java/redis/clients/jedis/RedisPipeline.java +++ b/src/main/java/redis/clients/jedis/RedisPipeline.java @@ -76,9 +76,9 @@ public interface RedisPipeline { Response lpop(String key); - Response lpush(String key, String string); + Response lpush(String key, String... string); - Response lpushx(String key, String string); + Response lpushx(String key, String... string); Response> lrange(String key, long start, long end); @@ -94,11 +94,11 @@ public interface RedisPipeline { Response rpop(String key); - Response rpush(String key, String string); + Response rpush(String key, String... string); - Response rpushx(String key, String string); + Response rpushx(String key, String... string); - Response sadd(String key, String member); + Response sadd(String key, String... member); Response scard(String key); diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index 948718c..485f83a 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -221,7 +221,7 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { return j.lpush(key, strings); } - public Long lpushx(String key, String string) { + public Long lpushx(String key, String... string) { Jedis j = getShard(key); return j.lpushx(key, string); } @@ -236,7 +236,7 @@ public class ShardedJedis extends BinaryShardedJedis implements JedisCommands { return j.move(key, dbIndex); } - public Long rpushx(String key, String string) { + public Long rpushx(String key, String... string) { Jedis j = getShard(key); return j.rpushx(key, string); } From 406d52b271b8669c5461c97e88a17480cfd8a674 Mon Sep 17 00:00:00 2001 From: Jonathan Leibiusky Date: Wed, 30 Jan 2013 10:41:12 -0300 Subject: [PATCH 20/23] fix tests, since ttl now return -2 or -1 depending if the key exists already --- .../jedis/tests/commands/AllKindOfValuesCommandsTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/redis/clients/jedis/tests/commands/AllKindOfValuesCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/AllKindOfValuesCommandsTest.java index d7df713..855a35d 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/AllKindOfValuesCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/AllKindOfValuesCommandsTest.java @@ -300,7 +300,7 @@ public class AllKindOfValuesCommandsTest extends JedisCommandTestBase { @Test public void ttl() { long ttl = jedis.ttl("foo"); - assertEquals(-1, ttl); + assertEquals(-2, ttl); jedis.set("foo", "bar"); ttl = jedis.ttl("foo"); @@ -312,7 +312,7 @@ public class AllKindOfValuesCommandsTest extends JedisCommandTestBase { // Binary long bttl = jedis.ttl(bfoo); - assertEquals(-1, bttl); + assertEquals(-2, bttl); jedis.set(bfoo, bbar); bttl = jedis.ttl(bfoo); From 23e50a363e621ef9b5996233c53445e9f8ed3e13 Mon Sep 17 00:00:00 2001 From: Jonathan Leibiusky Date: Wed, 30 Jan 2013 15:24:53 -0300 Subject: [PATCH 21/23] Change the way we test sentinel commands so it is automatic --- Makefile | 16 ++++++++++ .../jedis/tests/JedisSentinelTest.java | 31 +++++++++++++++---- 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 0e31379..00f29bf 100644 --- a/Makefile +++ b/Makefile @@ -12,15 +12,31 @@ requirepass foobared pidfile /tmp/redis2.pid endef + +define REDIS_SENTINEL1 +port 26379 +daemonize yes +sentinel monitor mymaster 127.0.0.1 6379 2 +sentinel auth-pass mymaster foobared +sentinel down-after-milliseconds mymaster 5000 +sentinel failover-timeout mymaster 900000 +sentinel can-failover mymaster yes +sentinel parallel-syncs mymaster 1 +pidfile /tmp/sentinel1.pid +endef + export REDIS1_CONF export REDIS2_CONF +export REDIS_SENTINEL1 test: echo "$$REDIS1_CONF" | redis-server - echo "$$REDIS2_CONF" | redis-server - + echo "$$REDIS_SENTINEL1" | redis-sentinel - mvn clean compile test kill `cat /tmp/redis1.pid` kill `cat /tmp/redis2.pid` + kill `cat /tmp/sentinel1.pid` .PHONY: test diff --git a/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java b/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java index 0bca18c..7cd8188 100644 --- a/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java +++ b/src/test/java/redis/clients/jedis/tests/JedisSentinelTest.java @@ -1,22 +1,40 @@ package redis.clients.jedis.tests; -import static junit.framework.Assert.*; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; import java.util.List; import java.util.Map; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; public class JedisSentinelTest { - private static final String MASTER_NAME = "mymaster"; - /** - * Based on redis/master/slave/sentinel configs from - * https://github.com/noise/redis-sentinel-tests. - */ + @Before + public void setup() throws InterruptedException { + Jedis j = new Jedis("localhost", 6380); + j.auth("foobared"); + j.configSet("masterauth", "foobared"); + j.slaveof("localhost", 6379); + // TODO: The sleep is to give time to the slave to synchronize with the + // master and also let know the sentinels about this new topology. We + // should find a better way to do this. + Thread.sleep(5000); + } + + @After + public void clear() { + Jedis j = new Jedis("localhost", 6380); + j.auth("foobared"); + j.slaveofNoOne(); + } + @Test public void sentinel() { Jedis j = new Jedis("localhost", 26379); @@ -45,5 +63,6 @@ public class JedisSentinelTest { // DO NOT RE-RUN TEST TOO FAST, RESET TAKES SOME TIME TO... RESET assertEquals(Long.valueOf(1), j.sentinelReset(masterName)); assertEquals(Long.valueOf(0), j.sentinelReset("woof" + masterName)); + } } From 9d538a06fd9145dcf6e44008c2a1648fadf4f5c0 Mon Sep 17 00:00:00 2001 From: Jonathan Leibiusky Date: Tue, 5 Feb 2013 15:44:35 -0300 Subject: [PATCH 22/23] when a script returns Null value, jedis throws NullPointerException --- src/main/java/redis/clients/jedis/Jedis.java | 8 +- .../tests/commands/ScriptingCommandsTest.java | 216 ++++++++++-------- 2 files changed, 120 insertions(+), 104 deletions(-) diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index bca74d0..f30990d 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2768,15 +2768,17 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand private Object getEvalResult() { Object result = client.getOne(); - + if (result instanceof byte[]) return SafeEncoder.encode((byte[]) result); if (result instanceof List) { List list = (List) result; List listResult = new ArrayList(list.size()); - for (Object bin : list) - listResult.add(SafeEncoder.encode((byte[]) bin)); + for (Object bin : list) { + listResult.add((bin == null ? null : SafeEncoder + .encode((byte[]) bin))); + } return listResult; } diff --git a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java index ed59799..a3675d4 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java @@ -6,133 +6,147 @@ import java.util.List; import org.junit.Test; import redis.clients.jedis.exceptions.JedisDataException; -import redis.clients.jedis.exceptions.JedisException; import redis.clients.util.SafeEncoder; public class ScriptingCommandsTest extends JedisCommandTestBase { - + @SuppressWarnings("unchecked") - @Test + @Test public void evalMultiBulk() { - String script = "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"; - List keys = new ArrayList(); - keys.add("key1"); - keys.add("key2"); - - List args = new ArrayList(); - args.add("first"); - args.add("second"); - - List response = (List)jedis.eval(script, keys, args ); - - assertEquals(4, response.size()); - assertEquals("key1", response.get(0)); - assertEquals("key2", response.get(1)); - assertEquals("first", response.get(2)); - assertEquals("second", response.get(3)); + String script = "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"; + List keys = new ArrayList(); + keys.add("key1"); + keys.add("key2"); + + List args = new ArrayList(); + args.add("first"); + args.add("second"); + + List response = (List) jedis.eval(script, keys, args); + + assertEquals(4, response.size()); + assertEquals("key1", response.get(0)); + assertEquals("key2", response.get(1)); + assertEquals("first", response.get(2)); + assertEquals("second", response.get(3)); } - - @Test + + @Test public void evalBulk() { - String script = "return KEYS[1]"; - List keys = new ArrayList(); - keys.add("key1"); - - List args = new ArrayList(); - args.add("first"); - - String response = (String)jedis.eval(script, keys, args); - - assertEquals("key1", response); + String script = "return KEYS[1]"; + List keys = new ArrayList(); + keys.add("key1"); + + List args = new ArrayList(); + args.add("first"); + + String response = (String) jedis.eval(script, keys, args); + + assertEquals("key1", response); } - - @Test + + @Test public void evalInt() { - String script = "return 2"; - List keys = new ArrayList(); - keys.add("key1"); - - Long response = (Long)jedis.eval(script, keys, new ArrayList()); - - assertEquals(new Long(2), response); + String script = "return 2"; + List keys = new ArrayList(); + keys.add("key1"); + + Long response = (Long) jedis + .eval(script, keys, new ArrayList()); + + assertEquals(new Long(2), response); } - - @Test + + @Test public void evalNoArgs() { - String script = "return KEYS[1]"; - List keys = new ArrayList(); - keys.add("key1"); - String response = (String)jedis.eval(script, keys, new ArrayList()); - - assertEquals("key1", response); + String script = "return KEYS[1]"; + List keys = new ArrayList(); + keys.add("key1"); + String response = (String) jedis.eval(script, keys, + new ArrayList()); + + assertEquals("key1", response); } - - @SuppressWarnings("unchecked") - @Test + + @Test public void evalsha() { - jedis.set("foo", "bar"); - jedis.eval("return redis.call('get','foo')"); - String result = (String)jedis.evalsha("6b1bf486c81ceb7edf3c093f4c48582e38c0e791"); - - assertEquals("bar", result); + jedis.set("foo", "bar"); + jedis.eval("return redis.call('get','foo')"); + String result = (String) jedis + .evalsha("6b1bf486c81ceb7edf3c093f4c48582e38c0e791"); + + assertEquals("bar", result); } - - @SuppressWarnings("unchecked") - @Test(expected=JedisDataException.class) + + @Test(expected = JedisDataException.class) public void evalshaShaNotFound() { - jedis.evalsha("ffffffffffffffffffffffffffffffffffffffff"); + jedis.evalsha("ffffffffffffffffffffffffffffffffffffffff"); } - - @SuppressWarnings("unchecked") - @Test + + @Test public void scriptFlush() { - jedis.set("foo", "bar"); - jedis.eval("return redis.call('get','foo')"); - jedis.scriptFlush(); - assertFalse(jedis.scriptExists("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + jedis.set("foo", "bar"); + jedis.eval("return redis.call('get','foo')"); + jedis.scriptFlush(); + assertFalse(jedis + .scriptExists("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); } - - @SuppressWarnings("unchecked") - @Test + + @Test public void scriptExists() { - jedis.scriptLoad("return redis.call('get','foo')"); - List exists = jedis.scriptExists("ffffffffffffffffffffffffffffffffffffffff","6b1bf486c81ceb7edf3c093f4c48582e38c0e791"); - assertFalse(exists.get(0)); - assertTrue(exists.get(1)); + jedis.scriptLoad("return redis.call('get','foo')"); + List exists = jedis.scriptExists( + "ffffffffffffffffffffffffffffffffffffffff", + "6b1bf486c81ceb7edf3c093f4c48582e38c0e791"); + assertFalse(exists.get(0)); + assertTrue(exists.get(1)); } - - @SuppressWarnings("unchecked") - @Test + + @Test public void scriptExistsBinary() { - jedis.scriptLoad(SafeEncoder.encode("return redis.call('get','foo')")); - List exists = jedis.scriptExists(SafeEncoder.encode("ffffffffffffffffffffffffffffffffffffffff"),SafeEncoder.encode("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); - assertEquals(new Long(0), exists.get(0)); - assertEquals(new Long(1), exists.get(1)); + jedis.scriptLoad(SafeEncoder.encode("return redis.call('get','foo')")); + List exists = jedis.scriptExists( + SafeEncoder.encode("ffffffffffffffffffffffffffffffffffffffff"), + SafeEncoder.encode("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + assertEquals(new Long(0), exists.get(0)); + assertEquals(new Long(1), exists.get(1)); } - - @SuppressWarnings("unchecked") - @Test + + @Test public void scriptLoad() { - jedis.scriptLoad("return redis.call('get','foo')"); - assertTrue(jedis.scriptExists("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + jedis.scriptLoad("return redis.call('get','foo')"); + assertTrue(jedis + .scriptExists("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); } - - @SuppressWarnings("unchecked") - @Test + + @Test public void scriptLoadBinary() { - jedis.scriptLoad(SafeEncoder.encode("return redis.call('get','foo')")); - List exists = jedis.scriptExists(SafeEncoder.encode("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); - assertEquals(new Long(1), exists.get(0)); + jedis.scriptLoad(SafeEncoder.encode("return redis.call('get','foo')")); + List exists = jedis.scriptExists(SafeEncoder + .encode("6b1bf486c81ceb7edf3c093f4c48582e38c0e791")); + assertEquals(new Long(1), exists.get(0)); } - - @SuppressWarnings("unchecked") - @Test + + @Test public void scriptKill() { - try { - jedis.scriptKill(); - } - catch(JedisDataException e) { - assertTrue(e.getMessage().contains("No scripts in execution right now.")); - } + try { + jedis.scriptKill(); + } catch (JedisDataException e) { + assertTrue(e.getMessage().contains( + "No scripts in execution right now.")); } + } + + @Test + public void scriptEvalReturnNullValues() { + String script = "return {redis.call('hget',KEYS[1],ARGV[1]),redis.call('hget',KEYS[2],ARGV[2])}"; + jedis.eval(script, 2, "key1", "key2", "1", "1"); + } + + @Test + public void scriptEvalShaReturnNullValues() { + String script = "return {redis.call('hget',KEYS[1],ARGV[1]),redis.call('hget',KEYS[2],ARGV[2])}"; + String sha = jedis.scriptLoad(script); + jedis.evalsha(sha, 2, "key1", "key2", "1", "1"); + } } \ No newline at end of file From 69f5340aa683a3d13aa2e8f9111cc560519c940c Mon Sep 17 00:00:00 2001 From: Jonathan Leibiusky Date: Tue, 5 Feb 2013 15:55:48 -0300 Subject: [PATCH 23/23] add info optional parameter --- src/main/java/redis/clients/jedis/BasicCommands.java | 2 ++ src/main/java/redis/clients/jedis/BinaryClient.java | 4 ++++ src/main/java/redis/clients/jedis/BinaryJedis.java | 5 +++++ .../clients/jedis/tests/commands/ControlCommandsTest.java | 2 ++ 4 files changed, 13 insertions(+) diff --git a/src/main/java/redis/clients/jedis/BasicCommands.java b/src/main/java/redis/clients/jedis/BasicCommands.java index fa4ee2d..482d43b 100644 --- a/src/main/java/redis/clients/jedis/BasicCommands.java +++ b/src/main/java/redis/clients/jedis/BasicCommands.java @@ -27,6 +27,8 @@ public interface BasicCommands { String shutdown(); String info(); + + String info(String section); String slaveof(String host, int port); diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index c6ac461..81c0c2f 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -648,6 +648,10 @@ public class BinaryClient extends Connection { public void info() { sendCommand(INFO); } + + public void info(final String section) { + sendCommand(INFO, section); + } public void monitor() { sendCommand(MONITOR); diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index d4d0a08..4c65974 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -2825,6 +2825,11 @@ public class BinaryJedis implements BasicCommands, BinaryJedisCommands, MultiKey client.info(); return client.getBulkReply(); } + + public String info(final String section) { + client.info(section); + return client.getBulkReply(); + } /** * Dump all the received requests in real time. diff --git a/src/test/java/redis/clients/jedis/tests/commands/ControlCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ControlCommandsTest.java index 7e59335..fbc7d8e 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ControlCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ControlCommandsTest.java @@ -58,6 +58,8 @@ public class ControlCommandsTest extends JedisCommandTestBase { public void info() { String info = jedis.info(); assertNotNull(info); + info = jedis.info("server"); + assertNotNull(info); } @Test