diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index 6b16205fcf..eff1640277 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -1316,6 +1316,21 @@ public void clientList() { sendCommand(CLIENT, Keyword.LIST.getRaw()); } + public void clientList(final long... clientIds) { + final byte[][] params = new byte[2 + clientIds.length][]; + int index = 0; + params[index++] = Keyword.LIST.getRaw(); + params[index++] = ID.getRaw(); + for (final long clientId : clientIds) { + params[index++] = toByteArray(clientId); + } + sendCommand(CLIENT, params); + } + + public void clientInfo() { + sendCommand(CLIENT, INFO.getRaw()); + } + public void clientSetname(final byte[] name) { sendCommand(CLIENT, Keyword.SETNAME.getRaw(), name); } diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 2d53b4b438..18be17d6a8 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -4266,6 +4266,20 @@ public byte[] clientListBinary() { return client.getBinaryBulkReply(); } + @Override + public byte[] clientListBinary(final long... clientIds) { + checkIsInMultiOrPipeline(); + client.clientList(clientIds); + return client.getBinaryBulkReply(); + } + + @Override + public byte[] clientInfoBinary() { + checkIsInMultiOrPipeline(); + client.clientInfo(); + return client.getBinaryBulkReply(); + } + @Override public String clientSetname(final byte[] name) { checkIsInMultiOrPipeline(); diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 4516b26710..a989a9a3ec 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -3568,6 +3568,20 @@ public String clientList() { return client.getBulkReply(); } + @Override + public String clientList(final long... clientIds) { + checkIsInMultiOrPipeline(); + client.clientList(clientIds); + return client.getBulkReply(); + } + + @Override + public String clientInfo() { + checkIsInMultiOrPipeline(); + client.clientInfo(); + return client.getBulkReply(); + } + @Override public String clientSetname(final String name) { checkIsInMultiOrPipeline(); diff --git a/src/main/java/redis/clients/jedis/commands/AdvancedBinaryJedisCommands.java b/src/main/java/redis/clients/jedis/commands/AdvancedBinaryJedisCommands.java index 55a923ca22..355f6d1b5e 100644 --- a/src/main/java/redis/clients/jedis/commands/AdvancedBinaryJedisCommands.java +++ b/src/main/java/redis/clients/jedis/commands/AdvancedBinaryJedisCommands.java @@ -48,6 +48,10 @@ String migrate(String host, int port, int destinationDB, int timeout, MigratePar byte[] clientListBinary(); + byte[] clientListBinary(long... clientIds); + + byte[] clientInfoBinary(); + String clientSetname(byte[] name); Long clientId(); diff --git a/src/main/java/redis/clients/jedis/commands/AdvancedJedisCommands.java b/src/main/java/redis/clients/jedis/commands/AdvancedJedisCommands.java index a47b580d78..64d4849a00 100644 --- a/src/main/java/redis/clients/jedis/commands/AdvancedJedisCommands.java +++ b/src/main/java/redis/clients/jedis/commands/AdvancedJedisCommands.java @@ -47,6 +47,10 @@ String migrate(String host, int port, int destinationDB, int timeout, MigratePar String clientList(); + String clientList(long... clientIds); + + String clientInfo(); + String clientSetname(String name); Long clientId(); diff --git a/src/main/java/redis/clients/jedis/commands/Commands.java b/src/main/java/redis/clients/jedis/commands/Commands.java index 2fad345a99..0bee01189e 100644 --- a/src/main/java/redis/clients/jedis/commands/Commands.java +++ b/src/main/java/redis/clients/jedis/commands/Commands.java @@ -476,6 +476,10 @@ default void restoreReplace(String key, int ttl, byte[] serializedValue) { void clientList(); + void clientList(long... clientIds); + + void clientInfo(); + void clientSetname(String name); void clientId(); diff --git a/src/test/java/redis/clients/jedis/tests/commands/ClientCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/ClientCommandsTest.java index 26c8c6b860..8a5544a1ad 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/ClientCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/ClientCommandsTest.java @@ -2,6 +2,7 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static redis.clients.jedis.params.ClientKillParams.Type; @@ -228,6 +229,22 @@ public void killUser() { jedis.aclDelUser("test_kill"); } + @Test + public void clientInfo() { + String info = client.clientInfo(); + assertNotNull(info); + assertEquals(1, info.split("\n").length); + assertTrue(info.contains(clientName)); + } + + @Test + public void clientListWithClientId() { + Long id = client.clientId(); + String listInfo = jedis.clientList(id); + assertNotNull(listInfo); + assertTrue(listInfo.contains(clientName)); + } + private void assertDisconnected(Jedis j) { try { j.ping();