From 7515e3b5d1224adcb6a10d24ed9b6b3b47033c9c Mon Sep 17 00:00:00 2001 From: Nikita Date: Tue, 17 Nov 2015 14:03:38 +0300 Subject: [PATCH] RKeys.getSlot method added. #289 --- src/main/java/org/redisson/RedissonKeys.java | 10 ++++++++++ .../org/redisson/client/protocol/RedisCommands.java | 2 ++ src/main/java/org/redisson/core/RKeys.java | 9 +++++++++ src/main/java/org/redisson/core/RKeysAsync.java | 9 +++++++++ 4 files changed, 30 insertions(+) diff --git a/src/main/java/org/redisson/RedissonKeys.java b/src/main/java/org/redisson/RedissonKeys.java index f57491e70..26a0cf0ec 100644 --- a/src/main/java/org/redisson/RedissonKeys.java +++ b/src/main/java/org/redisson/RedissonKeys.java @@ -41,6 +41,16 @@ public class RedissonKeys implements RKeys { this.commandExecutor = commandExecutor; } + @Override + public int getSlot(String key) { + return commandExecutor.get(getSlotAsync(key)); + } + + @Override + public Future getSlotAsync(String key) { + return commandExecutor.readAsync(null, RedisCommands.KEYSLOT, key); + } + @Override public Iterable getKeysByPattern(final String pattern) { List> iterables = new ArrayList>(); diff --git a/src/main/java/org/redisson/client/protocol/RedisCommands.java b/src/main/java/org/redisson/client/protocol/RedisCommands.java index 3bf93bc29..b7bbdde8d 100644 --- a/src/main/java/org/redisson/client/protocol/RedisCommands.java +++ b/src/main/java/org/redisson/client/protocol/RedisCommands.java @@ -51,6 +51,8 @@ import org.redisson.client.protocol.pubsub.PubSubStatusDecoder; public interface RedisCommands { + RedisStrictCommand KEYSLOT = new RedisStrictCommand("CLUSTER", "KEYSLOT", new IntegerReplayConvertor()); + RedisStrictCommand GETBIT = new RedisStrictCommand("GETBIT", new BooleanReplayConvertor()); RedisStrictCommand BITS_SIZE = new RedisStrictCommand("STRLEN", new BitsSizeReplayConvertor()); RedisStrictCommand STRLEN = new RedisStrictCommand("STRLEN", new IntegerReplayConvertor()); diff --git a/src/main/java/org/redisson/core/RKeys.java b/src/main/java/org/redisson/core/RKeys.java index 4bae1a9a4..8b8d82f30 100644 --- a/src/main/java/org/redisson/core/RKeys.java +++ b/src/main/java/org/redisson/core/RKeys.java @@ -19,6 +19,15 @@ import java.util.Collection; public interface RKeys extends RKeysAsync { + /** + * Get hash slot identifier for key. + * Available for cluster nodes only + * + * @param key + * @return + */ + int getSlot(String key); + /** * Get all keys by pattern using iterator. Keys traversing with SCAN operation * diff --git a/src/main/java/org/redisson/core/RKeysAsync.java b/src/main/java/org/redisson/core/RKeysAsync.java index 84672bc90..18f3b3e82 100644 --- a/src/main/java/org/redisson/core/RKeysAsync.java +++ b/src/main/java/org/redisson/core/RKeysAsync.java @@ -21,6 +21,15 @@ import io.netty.util.concurrent.Future; public interface RKeysAsync { + /** + * Get hash slot identifier for key in async mode. + * Available for cluster nodes only + * + * @param key + * @return + */ + Future getSlotAsync(String key); + /** * Get random key in async mode *