diff --git a/src/main/java/redis/clients/jedis/MultiKeyPipelineBase.java b/src/main/java/redis/clients/jedis/MultiKeyPipelineBase.java index 6c6c1e6cdf..c0bc5bc12b 100644 --- a/src/main/java/redis/clients/jedis/MultiKeyPipelineBase.java +++ b/src/main/java/redis/clients/jedis/MultiKeyPipelineBase.java @@ -307,6 +307,12 @@ public Response watch(byte[]... keys) { return getResponse(BuilderFactory.STRING); } + @Override + public Response unwatch() { + client.unwatch(); + return getResponse(BuilderFactory.STRING); + } + @Override public Response zinterstore(String dstkey, String... sets) { client.zinterstore(dstkey, sets); diff --git a/src/main/java/redis/clients/jedis/commands/MultiKeyBinaryRedisPipeline.java b/src/main/java/redis/clients/jedis/commands/MultiKeyBinaryRedisPipeline.java index 7a823be628..981e8d27f1 100644 --- a/src/main/java/redis/clients/jedis/commands/MultiKeyBinaryRedisPipeline.java +++ b/src/main/java/redis/clients/jedis/commands/MultiKeyBinaryRedisPipeline.java @@ -58,6 +58,8 @@ public interface MultiKeyBinaryRedisPipeline { Response watch(byte[]... keys); + Response unwatch(); + Response zinterstore(byte[] dstkey, byte[]... sets); Response zinterstore(byte[] dstkey, ZParams params, byte[]... sets); diff --git a/src/main/java/redis/clients/jedis/commands/MultiKeyCommandsPipeline.java b/src/main/java/redis/clients/jedis/commands/MultiKeyCommandsPipeline.java index b70ecb298a..b2f22d35f1 100644 --- a/src/main/java/redis/clients/jedis/commands/MultiKeyCommandsPipeline.java +++ b/src/main/java/redis/clients/jedis/commands/MultiKeyCommandsPipeline.java @@ -57,6 +57,8 @@ public interface MultiKeyCommandsPipeline { Response watch(String... keys); + Response unwatch(); + Response zinterstore(String dstkey, String... sets); Response zinterstore(String dstkey, ZParams params, String... sets); diff --git a/src/test/java/redis/clients/jedis/tests/PipeliningTest.java b/src/test/java/redis/clients/jedis/tests/PipeliningTest.java index 9e7a4baf73..6e7388745e 100644 --- a/src/test/java/redis/clients/jedis/tests/PipeliningTest.java +++ b/src/test/java/redis/clients/jedis/tests/PipeliningTest.java @@ -308,6 +308,24 @@ public void multiWithSync() { assertEquals("world", r3.get()); } + @Test + public void multiWithWatch() { + String key = "foo"; + String val = "bar"; + List expect = new ArrayList<>(); + List expMulti = new ArrayList<>(); + + Pipeline pipe = jedis.pipelined(); + pipe.set(key, val); expect.add("OK"); + pipe.watch(key); expect.add("OK"); + pipe.multi(); expect.add("OK"); + pipe.unwatch(); expect.add("QUEUED"); expMulti.add("OK"); + pipe.get(key); expect.add("QUEUED"); expMulti.add(val); + pipe.exec(); expect.add(expMulti); + + assertEquals(expect, pipe.syncAndReturnAll()); + } + @Test(expected = JedisDataException.class) public void pipelineExecShoudThrowJedisDataExceptionWhenNotInMulti() { Pipeline pipeline = jedis.pipelined();