2

I am using ConnectionPoolConfig + UnifiedJedis + Transaction. I am new for the redis using redis.clients 4.4.0-rc1, i have two questions

1 - can i use ConnectionPoolConfig in this way?

2 - Whats is the use of poolConfig.setMaxTotal()? in the code i have set poolConfig.setMaxTotal(250) but when i had increased load(set i < 500 in run method for loop) then i seen it uses 500+ clients (seen in RedisInsight UI)

import java.time.Duration;
import java.util.Date;

import redis.clients.jedis.ConnectionPoolConfig;
import redis.clients.jedis.JedisPooled;
import redis.clients.jedis.Transaction;
import redis.clients.jedis.UnifiedJedis;

class MultithreadingDemo extends Thread {
    private static final ConnectionPoolConfig connectionPoolConfig=buildConfigPool();
    private static final UnifiedJedis jedis = new JedisPooled(connectionPoolConfig, "localhost", 6379);
    
     private static ConnectionPoolConfig  buildConfigPool()
     {
         final ConnectionPoolConfig  poolConfig ;
               poolConfig = new ConnectionPoolConfig();
              
              poolConfig.setMaxTotal(250);
              poolConfig.setMaxIdle(50);
              poolConfig.setMinIdle(50);
              poolConfig.setTestOnBorrow(true);
              poolConfig.setTestOnReturn(true);
              poolConfig.setTestWhileIdle(true);
              poolConfig.setMinEvictableIdleTime(Duration.ofSeconds(60)); 
              poolConfig.setTimeBetweenEvictionRuns(Duration.ofSeconds(30));
              poolConfig.setNumTestsPerEvictionRun(3);
              poolConfig.setBlockWhenExhausted(true);            
              return poolConfig;
     }
        
        public void run() {
            System.out.println(" Start - " + Thread.currentThread().getId() + " - " + new Date());          
                for (int i = 0; i < 10; i++) {
                    Transaction tr = jedis.multi();
                    tr.jsonSetLegacy(System.currentTimeMillis() + " - " + Thread.currentThread().getId() + "ABC","Value");
                    tr.exec();
                }
            System.out.println(" End - " + Thread.currentThread().getId() + " - " + new Date());

        }
         
}
 
// Main Class
public class Multithread {
    
    public static void main(String[] args)
    {
        int n = 5; // Number of threads
        for (int i = 0; i < n; i++) {
            MultithreadingDemo  object
                = new MultithreadingDemo();
            object.start();
        }
    }
}

0 Answers0