@Override public void bgReWriteAof() { connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<String>) BinaryJedis::bgrewriteaof); }
@Override public void shutdown() { connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<String>) BinaryJedis::shutdown); }
@Override public void resetConfigStats() { connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<String>) BinaryJedis::configResetStat); }
@Override public String ping() { Collection<String> ping = clusterCommandExecutor .executeCommandOnAllNodes((LettuceClusterCommandCallback<String>) BaseRedisCommands::ping).resultsAsList(); for (String result : ping) { if (!ObjectUtils.nullSafeEquals("PONG", result)) { return ""; } } return "PONG"; }
@Override public void bgSave() { connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<String>) BinaryJedis::bgsave); }
@Override public void flushAll() { connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<String>) BinaryJedis::flushAll); }
@Override public String ping() { return !clusterCommandExecutor.executeCommandOnAllNodes((JedisClusterCommandCallback<String>) BinaryJedis::ping) .resultsAsList().isEmpty() ? "PONG" : null; }
private <T> MultiNodeResult<T> executeCommandOnAllNodes(JedisClusterCommandCallback<T> cmd) { return connection.getClusterCommandExecutor().executeCommandOnAllNodes(cmd); } }
private <T> MultiNodeResult<T> executeCommandOnAllNodes(final LettuceClusterCommandCallback<T> cmd) { return connection.getClusterCommandExecutor().executeCommandOnAllNodes(cmd); }
@Override public void setConfig(String param, String value) { Assert.notNull(param, "Parameter must not be null!"); Assert.notNull(value, "Value must not be null!"); connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<String>) client -> client.configSet(param, value)); }
@Override public void killClient(String host, int port) { Assert.hasText(host, "Host for 'CLIENT KILL' must not be 'null' or 'empty'."); String hostAndPort = String.format("%s:%s", host, port); connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<String>) client -> client.clientKill(hostAndPort)); }
@Override public Set<byte[]> keys(byte[] pattern) { Assert.notNull(pattern, "Pattern must not be null!"); Collection<List<byte[]>> keysPerNode = connection.getClusterCommandExecutor() .executeCommandOnAllNodes((LettuceClusterCommandCallback<List<byte[]>>) connection -> connection.keys(pattern)) .resultsAsList(); Set<byte[]> keys = new HashSet<>(); for (List<byte[]> keySet : keysPerNode) { keys.addAll(keySet); } return keys; }
@Override public Set<byte[]> keys(byte[] pattern) { Assert.notNull(pattern, "Pattern must not be null!"); Collection<Set<byte[]>> keysPerNode = connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<Set<byte[]>>) client -> client.keys(pattern)) .resultsAsList(); Set<byte[]> keys = new HashSet<>(); for (Set<byte[]> keySet : keysPerNode) { keys.addAll(keySet); } return keys; }
@Override public List<RedisClientInfo> getClientList() { Collection<String> map = connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<String>) Jedis::clientList).resultsAsList(); ArrayList<RedisClientInfo> result = new ArrayList<>(); for (String infos : map) { result.addAll(JedisConverters.toListOfRedisClientInformation(infos)); } return result; }
@Override public void clusterMeet(RedisClusterNode node) { Assert.notNull(node, "Cluster node must not be null for CLUSTER MEET command!"); Assert.hasText(node.getHost(), "Node to meet cluster must have a host!"); Assert.isTrue(node.getPort() > 0, "Node to meet cluster must have a port greater 0!"); this.clusterCommandExecutor.executeCommandOnAllNodes( (LettuceClusterCommandCallback<String>) client -> client.clusterMeet(node.getHost(), node.getPort())); }
@Override public void clusterMeet(RedisClusterNode node) { Assert.notNull(node, "Cluster node must not be null for CLUSTER MEET command!"); Assert.hasText(node.getHost(), "Node to meet cluster must have a host!"); Assert.isTrue(node.getPort() > 0, "Node to meet cluster must have a port greater 0!"); clusterCommandExecutor.executeCommandOnAllNodes( (JedisClusterCommandCallback<String>) client -> client.clusterMeet(node.getHost(), node.getPort())); }
@Override public Properties info() { Properties infos = new Properties(); List<NodeResult<Properties>> nodeResults = connection.getClusterCommandExecutor() .executeCommandOnAllNodes( (JedisClusterCommandCallback<Properties>) client -> JedisConverters.toProperties(client.info())) .getResults(); for (NodeResult<Properties> nodeProperties : nodeResults) { for (Entry<Object, Object> entry : nodeProperties.getValue().entrySet()) { infos.put(nodeProperties.getNode().asString() + "." + entry.getKey(), entry.getValue()); } } return infos; }
@Override public Properties info(String section) { Assert.notNull(section, "Section must not be null!"); Properties infos = new Properties(); List<NodeResult<Properties>> nodeResults = connection.getClusterCommandExecutor() .executeCommandOnAllNodes( (JedisClusterCommandCallback<Properties>) client -> JedisConverters.toProperties(client.info(section))) .getResults(); for (NodeResult<Properties> nodeProperties : nodeResults) { for (Entry<Object, Object> entry : nodeProperties.getValue().entrySet()) { infos.put(nodeProperties.getNode().asString() + "." + entry.getKey(), entry.getValue()); } } return infos; }
@Override public Properties getConfig(String pattern) { Assert.notNull(pattern, "Pattern must not be null!"); List<NodeResult<List<String>>> mapResult = connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<List<String>>) client -> client.configGet(pattern)) .getResults(); List<String> result = new ArrayList<>(); for (NodeResult<List<String>> entry : mapResult) { String prefix = entry.getNode().asString(); int i = 0; for (String value : entry.getValue()) { result.add((i++ % 2 == 0 ? (prefix + ".") : "") + value); } } return Converters.toProperties(result); }
@Override public Set<byte[]> keys(byte[] pattern) { Assert.notNull(pattern, "Pattern must not be null!"); Collection<Set<byte[]>> keysPerNode = connection.getClusterCommandExecutor() .executeCommandOnAllNodes((JedisClusterCommandCallback<Set<byte[]>>) client -> client.keys(pattern)) .resultsAsList(); Set<byte[]> keys = new HashSet<>(); for (Set<byte[]> keySet : keysPerNode) { keys.addAll(keySet); } return keys; }