in jetcache-support/jetcache-redis/src/main/java/com/alicp/jetcache/redis/RedisCache.java [61:105]
public RedisCache(RedisCacheConfig<K, V> config) {
super(config);
this.config = config;
this.valueEncoder = config.getValueEncoder();
this.valueDecoder = config.getValueDecoder();
if (config.getJedis() == null && config.getJedisPool() == null) {
throw new CacheConfigException("no jedis");
}
if (config.getJedis() != null && config.getJedisPool() != null) {
throw new CacheConfigException("'jedis' and 'jedisPool' can't set simultaneously");
}
if (config.getJedis() != null && config.getJedisSlavePools() != null) {
throw new CacheConfigException("'jedisSlavePools' should work with 'jedisPool' in RedisCacheConfig");
}
if (config.getJedisPool() != null && config.getSlaves() != null) {
throw new CacheConfigException("'slaves' should work with 'jedis' in RedisCacheConfig");
}
if (config.isReadFromSlave()) {
if (slaveCount() == 0) {
throw new CacheConfigException("slaves not config");
}
if (config.getSlaveReadWeights() == null) {
initDefaultWeights();
} else if (config.getSlaveReadWeights().length != slaveCount()) {
logger.error("length of slaveReadWeights and jedisSlavePools not equals, using default weights");
initDefaultWeights();
}
}
if (config.isExpireAfterAccess()) {
throw new CacheConfigException("expireAfterAccess is not supported");
}
UnifiedJedis jedis = config.getJedis();
if (jedis != null && jedis instanceof JedisCluster) {
try {
Field field = UnifiedJedis.class.getDeclaredField("provider");
boolean accessible = field.isAccessible();
field.setAccessible(true);
provider = (ClusterConnectionProvider) field.get(jedis);
field.setAccessible(accessible);
} catch (Exception ex) {
throw new IllegalStateException("can not get ConnectionProvider from JedisClient", ex);
}
}
}