2016-04-01 1 views
3

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

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

Мой вопрос в том, есть ли способ перезапустить сервер из приглашения redis-cli с помощью любых команд redis БЕЗ ВЫПОЛНЕНИЯ подсказки redis-cli?

ответ

1

Пока вам не нужно покидать cli, сервер не может быть перезапущен из него после его закрытия.

+0

Спасибо! Таким образом, единственный способ перезапустить сервер - выйти из redis-cli и перезагрузить службу redos-cli $ sudo? –

+0

Вам не нужно выходить из cli - вы можете просто открыть другой сеанс оболочки. После того, как сервер вернется в приглашение 'not connected>' cli, введите любую действительную команду для повторного подключения к серверу (например, 'PING'). –

+0

Это спасло мне много времени на исследования, что, очевидно, ни к чему не привело бы. Уже много раз искали! Спасибо огромное! –

0

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

после перезагрузки сервера, если вы ввести любую команду в этом «не подключен>», то Redis-кли попытается подключиться снова, если отправить команду не удалось.

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); 
    } 
}