docs: public static ShardedJedisPool newJedisPool(String hostsAndPorts, String password,
              long timeoutMs) {
          final int maxTotal = Runtime.getRuntime().availableProcessors();
          final int maxIdle = maxTotal / 2;
  
          JedisPoolConfig poolConfig = new JedisPoolConfig();
          poolConfig.setMaxTotal(maxTotal);
          poolConfig.setMinIdle(1);
          poolConfig.setMaxIdle(maxIdle > 0 ? maxIdle : 1);
          poolConfig.setMaxWaitMillis(timeoutMs);
          // poolConfig.setTestOnBorrow(true);
          poolConfig.setTestWhileIdle(true);
  
          List<JedisShardInfo> shards = new ArrayList<>();
          String[] hapList = hostsAndPorts.split("[,;\\s]+");
          for (String hostAndPort : hapList) {
              String[] tokens = hostAndPort.split(":");
              String host = tokens.length > 0 ? tokens[0] : Protocol.DEFAULT_HOST;
              int port = tokens.length > 1 ? Integer.parseInt(tokens[1]) : Protocol.DEFAULT_PORT;
              JedisShardInfo shardInfo = new JedisShardInfo(host, port);
              shardInfo.setPassword(password);
              shards.add(shardInfo);
          }
          ShardedJedisPool jedisPool = new ShardedJedisPool(poolConfig, shards);
  
          return jedisPool;
      }