连接服务器的简单脚本:

#include "hiredis.h"
int main(void) {
    int fd;

    unsigned int j;
    redisReply *reply;
    reply = redisConnect(&fd, "test.com", 6379);

    if (reply != NULL) {
        printf("Connection error: %s", reply->reply);
        exit(1);
    }

    reply = redisCommand(fd,"PING");
    printf("PONG: %s\n", reply->reply);
    freeReplyObject(reply);
}

如果服务器可用-一切正常。如果不是,则需要长时间的停顿。例如,如何将等待时间减少到2秒?

最佳答案

我对Redis不太了解。但我认为,redisConnect内部基本上也只是在阻塞的fd上调用connect()。

因此,请尝试使用setsockopt预先设置超时时间:

struct timeval timeout;
timeout.tv_usec = 0;
timeout.tv_sec = 2;
setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (void *)&timeout, sizeof(timeout));

这会将发送定时时间设置为2秒,对于接收,基本上也是如此。

干杯,

关于c - 如何减少连接的等待时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3817251/

10-13 02:15