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); }