code: func (b *redisBroker) Connect() error {
  	if b.pool != nil {
  		return nil
  	}
  
  	var addr string
  
  	if len(b.opts.Addrs) == 0 || b.opts.Addrs[0] == "" {
  		addr = "redis://127.0.0.1:6379"
  	} else {
  		addr = b.opts.Addrs[0]
  
  		if !strings.HasPrefix("redis://", addr) {
  			addr = "redis://" + addr
  		}
  	}
  
  	b.addr = addr
  
  	b.pool = &redis.Pool{
  		MaxIdle:     b.bopts.maxIdle,
  		MaxActive:   b.bopts.maxActive,
  		IdleTimeout: b.bopts.idleTimeout,
  		Dial: func() (redis.Conn, error) {
  			return redis.DialURL(
  				b.addr,
  				redis.DialConnectTimeout(b.bopts.connectTimeout),
  				redis.DialReadTimeout(b.bopts.readTimeout),
  				redis.DialWriteTimeout(b.bopts.writeTimeout),
  			)
  		},
  		TestOnBorrow: func(c redis.Conn, t time.Time) error {
  			_, err := c.Do("PING")
  			return err
  		},
  	}
  
  	return nil
  }
docs: // Connect establishes a connection to Redis which provides the
  // pub/sub implementation.