1. 2.9.0版本JedisSlotBasedConnectionHandler代碼
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
public Jedis getConnection() {
// In antirez's redis-rb-cluster implementation,
// getRandomConnection always return valid connection (able to
// ping-pong)
// or exception if all connections are invalid
List<JedisPool> pools = cache.getShuffledNodesPool();
for (JedisPool pool : pools) {
Jedis jedis = null;
try {
jedis = pool.getResource();
if (jedis == null) {
continue;
}
String result = jedis.ping();
if (result.equalsIgnoreCase("pong")) return jedis;
jedis.close();
} catch (JedisException ex) {
if (jedis != null) {
jedis.close();
}
}
}
throw new JedisNoReachableClusterNodeException("No reachable node in cluster");
}
2.3.0.0版本JedisSlotBasedConnectionHandler代碼
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.0</version>
</dependency>
public Jedis getConnection() {
List<JedisPool> pools = this.cache.getShuffledNodesPool();
Iterator var2 = pools.iterator();
while(var2.hasNext()) {
JedisPool pool = (JedisPool)var2.next();
Jedis jedis = null;
try {
jedis = pool.getResource();
if (jedis != null) {
String result = jedis.ping();
if (result.equalsIgnoreCase("pong")) {
return jedis;
}
jedis.close();
}
} catch (JedisException var6) {
if (jedis != null) {
jedis.close();
}
}
}
throw new JedisNoReachableClusterNodeException("No reachable node in cluster");
}