Команда Redis-cli для перезапуска сервера Redis

Я отключил сервер Redis, используя SHUTDOWN из redis-cli. Теперь подсказка показывает «не подключено>».

Единственный способ перезапустить сервер, который я нашел, — это выйти из командной строки redis-cli, а затем перезапустить службу Redis.

Мой вопрос: есть ли способ перезапустить сервер из командной строки redis-cli с помощью любых команд redis БЕЗ ВЫХОДА из командной строки redis-cli?


person Adarsh Philip    schedule 01.04.2016    source источник


Ответы (2)


Хотя вам не нужно выходить из cli, сервер нельзя перезапустить из него после его выключения.

person Itamar Haber    schedule 01.04.2016
comment
Спасибо! Таким образом, единственный способ перезапустить сервер — выйти из redis-cli и выполнить перезапуск службы $ sudo redis-cli? - person Adarsh Philip; 01.04.2016
comment
Вам не нужно выходить из кли — вы можете просто открыть другой сеанс оболочки. Как только сервер заработает, вернитесь в командную строку cli not connected> и введите любую допустимую команду для повторного подключения к серверу (например, PING). - person Itamar Haber; 02.04.2016
comment
Это сэкономило мне много времени на исследования, которые, очевидно, ни к чему бы не привели. Уже много искал! Большое спасибо! - person Adarsh Philip; 05.04.2016

я согласен с ответом Итамара Хабера, и я раскрою детали

после перезапуска сервера, если вы введете какую-либо команду в этом «не подключено>», 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-сервера он будет прослушивать событие сокета, если произойдет соединение сокета, сервер примет соединение здесь

     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);
    }
}
person Amitābha    schedule 10.04.2016