Merge branch 'master' of https://github.com/anthonyu/jedis
This commit is contained in:
@@ -2755,7 +2755,7 @@ public class Jedis extends BinaryJedis implements JedisCommands, MultiKeyCommand
|
||||
client.rollbackTimeout();
|
||||
}
|
||||
|
||||
private String[] getParams(List<String> keys, List<String> args) {
|
||||
protected static String[] getParams(List<String> keys, List<String> args) {
|
||||
int keyCount = keys.size();
|
||||
int argCount = args.size();
|
||||
|
||||
|
||||
@@ -1159,4 +1159,33 @@ abstract class PipelineBase extends Queable implements
|
||||
return getResponse(BuilderFactory.DOUBLE);
|
||||
}
|
||||
|
||||
public Response<String> eval(String script) {
|
||||
return this.eval(script, 0, new String[0]);
|
||||
}
|
||||
|
||||
public Response<String> eval(String script, List<String> keys, List<String> args) {
|
||||
String[] argv = Jedis.getParams(keys, args);
|
||||
return this.eval(script, keys.size(), argv);
|
||||
}
|
||||
|
||||
public Response<String> eval(String script, int numKeys, String[] argv) {
|
||||
getClient(script).eval(script, numKeys, argv);
|
||||
return getResponse(BuilderFactory.STRING);
|
||||
}
|
||||
|
||||
public Response<String> evalsha(String script) {
|
||||
return this.evalsha(script, 0, new String[0]);
|
||||
}
|
||||
|
||||
public Response<String> evalsha(String sha1, List<String> keys, List<String> args) {
|
||||
String[] argv = Jedis.getParams(keys, args);
|
||||
return this.evalsha(sha1, keys.size(), argv);
|
||||
}
|
||||
|
||||
public Response<String> evalsha(String sha1, int numKeys, String[] argv) {
|
||||
getClient(sha1).evalsha(sha1, numKeys, argv);
|
||||
return getResponse(BuilderFactory.STRING);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -242,4 +242,70 @@ public class PipeliningTest extends Assert {
|
||||
assertEquals(new Long(-3), r3.get().get(1));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEval() {
|
||||
String script = "return 'success!'";
|
||||
|
||||
Pipeline p = jedis.pipelined();
|
||||
Response<String> result = p.eval(script);
|
||||
p.sync();
|
||||
|
||||
assertEquals("success!", result.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvalKeyAndArg() {
|
||||
String key = "test";
|
||||
String arg = "3";
|
||||
String script = "redis.call('INCRBY', KEYS[1], ARGV[1]) redis.call('INCRBY', KEYS[1], ARGV[1])";
|
||||
|
||||
Pipeline p = jedis.pipelined();
|
||||
p.set(key, "0");
|
||||
Response<String> result0 = p.eval(script, Arrays.asList(key), Arrays.asList(arg));
|
||||
p.incr(key);
|
||||
Response<String> result1 = p.eval(script, Arrays.asList(key), Arrays.asList(arg));
|
||||
Response<String> result2 = p.get(key);
|
||||
p.sync();
|
||||
|
||||
assertNull(result0.get());
|
||||
assertNull(result1.get());
|
||||
assertEquals("13", result2.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvalsha() {
|
||||
String script = "return 'success!'";
|
||||
String sha1 = jedis.scriptLoad(script);
|
||||
|
||||
assertTrue(jedis.scriptExists(sha1));
|
||||
|
||||
Pipeline p = jedis.pipelined();
|
||||
Response<String> result = p.evalsha(sha1);
|
||||
p.sync();
|
||||
|
||||
assertEquals("success!", result.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvalshaKeyAndArg() {
|
||||
String key = "test";
|
||||
String arg = "3";
|
||||
String script = "redis.call('INCRBY', KEYS[1], ARGV[1]) redis.call('INCRBY', KEYS[1], ARGV[1])";
|
||||
String sha1 = jedis.scriptLoad(script);
|
||||
|
||||
assertTrue(jedis.scriptExists(sha1));
|
||||
|
||||
Pipeline p = jedis.pipelined();
|
||||
p.set(key, "0");
|
||||
Response<String> result0 = p.evalsha(sha1, Arrays.asList(key), Arrays.asList(arg));
|
||||
p.incr(key);
|
||||
Response<String> result1 = p.evalsha(sha1, Arrays.asList(key), Arrays.asList(arg));
|
||||
Response<String> result2 = p.get(key);
|
||||
p.sync();
|
||||
|
||||
assertNull(result0.get());
|
||||
assertNull(result1.get());
|
||||
assertEquals("13", result2.get());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user