2 Aralık 2020 Çarşamba

JedisPool Sınıfı - Jedis Nesnesi Connection Pooling İçindir

Giriş
Şu satırı dahil ederiz
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
Bu sınıf Pool<Jedis> arayüzünden kalıtıyor. Dolayısıyla şöyle yapılabilir. Yani JedisPool ve JedisSentinelPool arasında tercih yapılabilir.
Pool<Jedis> jedisPool;

GenericObjectPoolConfig<Jedis> poolConfig = new GenericObjectPoolConfig<>();
poolConfig.setMaxIdle(...);
poolConfig.setMaxTotal(...);

String host = ...;
int port = ...;

String passwd = ...;
int connectionTimeout = ...;
int db = ...;
boolean ssl = ...;

boolean sentinelMode = ...;

if (sentinelMode) {
  String sentinelMaster = ...
  Set<String> sentinels = ...;

  this.jedisPool = StringUtils.isNotBlank(passwd)
    ? new JedisSentinelPool(sentinelMaster, sentinels, poolConfig, connectionTimeout,
passwd, db)
    : new JedisSentinelPool(sentinelMaster,sentinels, poolConfig, connectionTimeout,
null, db);
} else {
  this.jedisPool = StringUtils.isNotBlank(passwd)
    ? new JedisPool(poolConfig, host, port, connectionTimeout, passwd, db, ssl)
    : new JedisPool(poolConfig, host, port, connectionTimeout, null, db, ssl);
}
constructor - host + port
Şöyle yaparız
JedisPool jedisPool;
String password = ...;
if (password.length() > 0) {
  jedisPool = new JedisPool(new JedisPoolConfig(), host, port, 2000, password);
} else {
  jedisPool = new JedisPool(host, port);
}
constructor - GenericObjectPoolConfig + host + port + timeout
org.apache.commons.pool2.impl.GenericObjectPoolConfig aslında bir apache sınıfı. Bu sınıftan kalıtan JedisPoolConfig kullanılabilir.

Örnek
Şöyle yaparız
@Configuration
public class RedisCacheConfig {

  //Redis server host ip/domain name
  @Value("${redis.host}")
  private String redisHost;

  //Redis server port
  @Value("${redis.port}")
  private Integer redisPort;

  //Timeout value in seconds
  @Value("${redis.timeout}")
  private Integer redisTimeout;
  // Maximum Active Connection Count
  @Value("${redis.maximumActiveConnectionCount}")
  private Integer redisMaximumActiveConnectionCount;

  @Bean
  public JedisPool jedisPool() {
    // Initialize JedisPoolConfig object
    JedisPoolConfig poolConfig = new JedisPoolConfig();
    // Set maximum active connection count
    poolConfig.setMaxTotal(redisMaximumActiveConnectionCount);
    //Initialize JedisPool object using server related properties.
    //If you are using additional properties like,{ password ,ssl.enabled etc }
//you have to pass those 
    // values into JedisPool constructor.
    JedisPool jedisPool = new JedisPool(poolConfig, redisHost, redisPort, redisTimeout);
    return jedisPool;
  }
}
constructor - GenericObjectPoolConfig + host + port + timeout + password
Örnek
Şöyle yaparız. Varsayılan bağlantı sayısı 8'dir.
JedisPool jedisPool = new JedisPool(new JedisPoolConfig(),host,port, 2000, password);
try (Jedis jedis = jedisPool.getResource()) {
  String result = jedis.set("welcome", "world");
  String value = jedis.get("welcome");
}
jedisPool.close();
Örnek
Varsayılan bağlantı sayısını artırmak için şöyle yaparız.
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(128);
jedisPool = new JedisPool(poolConfig, host, port, timeout, password);
constructor - GenericObjectPoolConfig + host + port + timeout + password + ssl
Örnek
Şöyle yaparız
GenericObjectPoolConfig<Jedis> jedisPoolConfig = new GenericObjectPoolConfig<>(); String redisHost = ...; int redisPort = ...; int timeout = 5000; String redisPassword = ...; boolean isSSL = true; JedisPool pool = new JedisPool(jedisPoolConfig, redisHost, redisPort, timeout, redisPassword, isSSL);
close metodu
Bu metod Closeable arayüzünden gelir
Örnek
Şöyle yaparız.
JedisPool jedisPool = ...;
...
jedisPool.close();
destroy metodu
Örnek
Şöyle yaparız.
JedisPool jedisPool = ...;
...
jedisPool.destroy();
getResource metodu
Şöyle yaparız
try (Jedis jedis = jedisPool.getResource()) {
  ...
}

Hiç yorum yok:

Yorum Gönder