diff --git a/redisson/src/main/java/org/redisson/RedissonKeys.java b/redisson/src/main/java/org/redisson/RedissonKeys.java index 863a787d2..c4517c39c 100644 --- a/redisson/src/main/java/org/redisson/RedissonKeys.java +++ b/redisson/src/main/java/org/redisson/RedissonKeys.java @@ -230,27 +230,15 @@ public class RedissonKeys implements RKeys { }; for (MasterSlaveEntry entry : entries) { - RFuture> findFuture = commandExecutor.readAsync(entry, null, RedisCommands.KEYS, pattern); - findFuture.addListener(new FutureListener>() { - @Override - public void operationComplete(Future> future) throws Exception { - if (!future.isSuccess()) { - failed.set(future.cause()); - checkExecution(result, failed, count, executed); - return; - } - - Collection keys = future.getNow(); - if (keys.isEmpty()) { - checkExecution(result, failed, count, executed); - return; - } - - RFuture deleteFuture = deleteAsync(keys.toArray(new String[keys.size()])); - deleteFuture.addListener(listener); - } - }); - } + Iterator keysIterator = createKeysIterator(entry, pattern, 10); + Collection keys = new HashSet(); + while (keysIterator.hasNext()) { + String key = keysIterator.next(); + keys.add(key); + } + RFuture deleteFuture = deleteAsync(keys.toArray(new String[keys.size()])); + deleteFuture.addListener(listener); + } return result; }