Redis-cli命令重启redis服务器

时间:2016-04-01 05:33:43

标签: redis redis-cli

我使用redis-cli中的SHUTDOWN终止了redis服务器。现在,提示显示“未连接”>'。

我发现重启服务器的唯一方法是退出redis-cli提示符,然后重新启动redis服务。

我的问题是,有没有办法在没有退出redis-cli提示符的情况下使用任何redis命令从redis-cli提示符重启服务器?

2 个答案:

答案 0 :(得分:1)

虽然您不必退出cli,但一旦关闭服务器,就无法从服务器重新启动服务器。

答案 1 :(得分:0)

我同意Itamar Haber的回答,我会发现细节

服务器重启后,如果您在此“未连接”>'中键入任何命令,则如果发送命令失败,redis-cli将再次尝试连接。

while (1) {
        config.cluster_reissue_command = 0;
        if (cliSendCommand(argc,argv,repeat) != REDIS_OK) {
            cliConnect(1);//try to connect redis server if sendcommand failed

            if (cliSendCommand(argc,argv,repeat) != REDIS_OK) {//after try to connect,send commend again
                cliPrintContextError();
                return REDIS_ERR;
            }
         }
    }

redis-server重启成功后,它会监听socket事件,如果socket连接发生,服务器将接受此处连接

     void acceptTcpHandler(aeEventLoop *el, int fd, void *privdata, int mask) {
                ......some code.......
    while(max--) {
        cfd = anetTcpAccept(server.neterr, fd, cip, sizeof(cip), &cport);//accept connect
        if (cfd == ANET_ERR) {
            if (errno != EWOULDBLOCK)
                serverLog(LL_WARNING,
                    "Accepting client connection: %s", server.neterr);
            return;
        }
        serverLog(LL_VERBOSE,"Accepted %s:%d", cip, cport);
        acceptCommonHandler(cfd,0,cip);
    }
}