Я не знаю много о Redis.но я предполагаю, что redisConnect внутренне в основном также просто вызывает connect () на блокирующем fd.
, поэтому попробуйте заранее установить время ожидания, используя setsockopt :
struct timeval timeout;
timeout.tv_usec = 0;
timeout.tv_sec = 2;
setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (void *)&timeout, sizeof(timeout));
это устанавливает тайм-аут отправки на 2 секунды, для получения вы в основном делаете то же самое.
ура,