Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package redis.clients.jedis;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.SSLSocketFactory;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.exceptions.JedisConnectionException;
import redis.clients.jedis.exceptions.JedisException;
import redis.clients.jedis.util.Pool;
import redis.clients.jedis.util.SafeEncoder;
public class JedisClusterInfoCache {
private final Map nodes = new HashMap<>();
private final Map slots = new HashMap<>();
private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
private final Lock r = rwl.readLock();
private final Lock w = rwl.writeLock();
private final Lock rediscoverLock = new ReentrantLock();
private final GenericObjectPoolConfig poolConfig;
private final JedisClientConfig clientConfig;
private static final int MASTER_NODE_INDEX = 2;
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig, int timeout) {
this(poolConfig, timeout, timeout, null, null);
}
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final String password,
final String clientName) {
this(poolConfig, connectionTimeout, soTimeout, null, password, clientName);
}
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final int infiniteSoTimeout,
final String password, final String clientName) {
this(poolConfig, connectionTimeout, soTimeout, infiniteSoTimeout, null, password, clientName);
}
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final String user, final String password,
final String clientName) {
this(poolConfig, connectionTimeout, soTimeout, user, password, clientName, false, null, null,
null, (HostAndPortMapper) null);
}
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final int infiniteSoTimeout,
final String user, final String password, final String clientName) {
this(poolConfig, connectionTimeout, soTimeout, infiniteSoTimeout, user, password, clientName,
false, null, null, null, (HostAndPortMapper) null);
}
/**
* @deprecated This constructor will be removed in next major release.
*/
@Deprecated
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final String password,
final String clientName, boolean ssl, SSLSocketFactory sslSocketFactory,
SSLParameters sslParameters, HostnameVerifier hostnameVerifier,
JedisClusterHostAndPortMap hostAndPortMap) {
this(poolConfig, connectionTimeout, soTimeout, null, password, clientName, ssl,
sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
}
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final String password,
final String clientName, boolean ssl, SSLSocketFactory sslSocketFactory,
SSLParameters sslParameters, HostnameVerifier hostnameVerifier,
HostAndPortMapper hostAndPortMap) {
this(poolConfig, connectionTimeout, soTimeout, null, password, clientName, ssl,
sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
}
/**
* @deprecated This constructor will be removed in next major release.
*/
@Deprecated
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final String user, final String password,
final String clientName, boolean ssl, SSLSocketFactory sslSocketFactory,
SSLParameters sslParameters, HostnameVerifier hostnameVerifier,
JedisClusterHostAndPortMap hostAndPortMap) {
this(poolConfig, connectionTimeout, soTimeout, 0, user, password, clientName, ssl,
sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
}
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final String user, final String password,
final String clientName, boolean ssl, SSLSocketFactory sslSocketFactory,
SSLParameters sslParameters, HostnameVerifier hostnameVerifier,
HostAndPortMapper hostAndPortMap) {
this(poolConfig, connectionTimeout, soTimeout, 0, user, password, clientName, ssl,
sslSocketFactory, sslParameters, hostnameVerifier, hostAndPortMap);
}
/**
* @deprecated This constructor will be removed in next major release.
*/
@Deprecated
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final int infiniteSoTimeout,
final String user, final String password, final String clientName, boolean ssl,
SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap hostAndPortMap) {
this(poolConfig, connectionTimeout, soTimeout, infiniteSoTimeout, user, password, clientName,
ssl, sslSocketFactory, sslParameters, hostnameVerifier, (HostAndPortMapper) hostAndPortMap);
}
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final int connectionTimeout, final int soTimeout, final int infiniteSoTimeout,
final String user, final String password, final String clientName, boolean ssl,
SSLSocketFactory sslSocketFactory, SSLParameters sslParameters,
HostnameVerifier hostnameVerifier, HostAndPortMapper hostAndPortMap) {
this(poolConfig, DefaultJedisClientConfig.builder()
.connectionTimeoutMillis(connectionTimeout).socketTimeoutMillis(soTimeout)
.blockingSocketTimeoutMillis(infiniteSoTimeout).user(user).password(password)
.clientName(clientName).ssl(ssl).sslSocketFactory(sslSocketFactory)
.sslParameters(sslParameters).hostnameVerifier(hostnameVerifier)
.hostAndPortMapper(hostAndPortMap).build());
}
public JedisClusterInfoCache(final GenericObjectPoolConfig poolConfig,
final JedisClientConfig clientConfig) {
this.poolConfig = poolConfig;
this.clientConfig = clientConfig;
}
public void discoverClusterNodesAndSlots(Jedis jedis) {
List