Refactor redis cluster connection handler and add JedisAskDataException handling

This commit is contained in:
Marcos Nils
2013-12-20 15:28:32 -03:00
parent c008070045
commit 0bc27ac3a2
6 changed files with 66 additions and 50 deletions

View File

@@ -1,33 +1,8 @@
package redis.clients.jedis;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import redis.clients.util.Pool;
public class JedisClusterConnectionHandler {
private Map<String, JedisPool> nodes = new HashMap<String, JedisPool>();
public interface JedisClusterConnectionHandler {
public JedisClusterConnectionHandler(Set<HostAndPort> nodes) {
initializeSlotsCache(nodes);
}
private void initializeSlotsCache(Set<HostAndPort> nodes) {
for (HostAndPort hostAndPort : nodes) {
JedisPool jp = new JedisPool(hostAndPort.getHost(),
hostAndPort.getPort());
this.nodes.put(hostAndPort.getHost() + hostAndPort.getPort(), jp);
}
}
@SuppressWarnings("unchecked")
public Jedis getRandomConnection() {
Object[] nodeArray = nodes.values().toArray();
return ((Pool<Jedis>) nodeArray[new Random().nextInt(nodeArray.length)]).getResource();
}
Jedis getConnection();
}