я согласен Итамар 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);
}
}
Спасибо! Таким образом, единственный способ перезапустить сервер - выйти из redis-cli и перезагрузить службу redos-cli $ sudo? –
Вам не нужно выходить из cli - вы можете просто открыть другой сеанс оболочки. После того, как сервер вернется в приглашение 'not connected>' cli, введите любую действительную команду для повторного подключения к серверу (например, 'PING'). –
Это спасло мне много времени на исследования, что, очевидно, ни к чему не привело бы. Уже много раз искали! Спасибо огромное! –