redis-cliからのSHUTDOWNを使用してredisサーバを終了しました。プロンプトに「接続されていません」と表示されます。redis-cliコマンドでredisサーバを再起動
サーバを再起動する唯一の方法は、redis-cliプロンプトを終了してから、redisサービスを再起動することでした。
私の質問は、redis-cliプロンプトを出さずにredisコマンドを使用してredis-cliプロンプトからサーバを再起動する方法はありますか?
redis-cliからのSHUTDOWNを使用してredisサーバを終了しました。プロンプトに「接続されていません」と表示されます。redis-cliコマンドでredisサーバを再起動
サーバを再起動する唯一の方法は、redis-cliプロンプトを終了してから、redisサービスを再起動することでした。
私の質問は、redis-cliプロンプトを出さずにredisコマンドを使用してredis-cliプロンプトからサーバを再起動する方法はありますか?
cliを終了する必要はありませんが、シャットダウン後はサーバーを再起動できません。私はItamarハーバーの答えを同意し、私は、サーバーの再起動後に詳細
を明らかにします
あなたはこの「>接続されていない」のいずれかのコマンドを入力した場合、Redisの-CLIはsendコマンドが失敗した場合は、再度接続を試みます。
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を終了し、$ sudoサービスをredis-cli再起動することです。 –
あなたはcliを終了する必要はありません - 単に別のシェルセッションを開くことができます。サーバが立ち上がったら、cliの 'not connected>'プロンプトに戻り、サーバに再接続するための有効なコマンドを入力します(例えば 'PING')。 –
それは私に多くの研究時間を節約しました。明らかに何ももたらさなかったでしょう。既にたくさん検索していました!どうもありがとうございます! –