2016-04-01 3 views
3

J'ai terminé le serveur redis en utilisant SHUTDOWN de redis-cli. Maintenant, l'invite affiche 'non connecté>'.Commande Redis-cli pour redémarrer le serveur redis

Le seul moyen que j'ai trouvé pour redémarrer le serveur était de quitter l'invite redis-cli, puis de redémarrer le service redis.

Ma question est, est-il possible de redémarrer le serveur à partir de l'invite redis-cli en utilisant les commandes redis SANS EXIT l'invite redis-cli?

Répondre

1

Même s'il n'est pas nécessaire de quitter le cli, le serveur ne peut pas être redémarré à partir de ce dernier une fois qu'il a été arrêté.

+0

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? –

+0

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'). –

+0

Cela m'a économisé beaucoup de temps de recherche, ce qui, évidemment, n'aurait conduit à rien. J'avais déjà beaucoup cherché! Merci beaucoup! –

0

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