Je suis d'accord Itamar Haber réponse et je découvrirai les détails
après le redémarrage du serveur, si vous tapez une commande dans ce « non connecté> », le Redis-cli se tente de se connecter à nouveau si l'envoi de commande a échoué.
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;
}
}
}
après le redémarrage Redis-serveur avec succès, il écoutera événement socket, si de socket connect se produit, le serveur accepte la connexion à ici
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);
}
}
Merci! Donc la seule façon de redémarrer le serveur est de quitter le redis-cli et de faire un redémarrage du service $ sudo redis-cli? –
Vous n'avez pas besoin de quitter le cli - vous pouvez simplement ouvrir une autre session shell. Une fois que le serveur est rétabli, dans l'invite 'non connecté> du cli, tapez une commande valide pour vous reconnecter au serveur (par exemple' PING'). –
Cela m'a économisé beaucoup de temps de recherche, ce qui, évidemment, n'aurait conduit à rien. J'avais déjà beaucoup cherché! Merci beaucoup! –