我使用redis-cli中的SHUTDOWN終止了redis服務器。現在提示顯示'not connected>'。Redis-cli命令重新啓動redis服務器
我發現重新啓動服務器的唯一方法是退出redis-cli提示符,然後重新啓動redis服務。
我的問題是,有沒有辦法使用任何redis命令從redis-cli提示符下重新啓動服務器,而無需退出redis-cli提示符?
我使用redis-cli中的SHUTDOWN終止了redis服務器。現在提示顯示'not connected>'。Redis-cli命令重新啓動redis服務器
我發現重新啓動服務器的唯一方法是退出redis-cli提示符,然後重新啓動redis服務。
我的問題是,有沒有辦法使用任何redis命令從redis-cli提示符下重新啓動服務器,而無需退出redis-cli提示符?
雖然您不必退出cli,但服務器關閉後無法從服務器重新啓動。
我同意伊塔馬爾哈伯答案,並在服務器重新啓動後,我會發現細節
,如果你在這個「未連接>」輸入任何命令,Redis的-CLI將嘗試連接,如果再發送命令失敗。
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 restart? –
您不必退出cli - 只需打開另一個shell會話即可。一旦服務器啓動,返回到cli的'not connected>'提示符下,輸入任何有效的命令重新連接到服務器(例如'PING')。 –
這爲我節省了大量的研究時間,這顯然不會導致任何結果。已經搜索了很多!非常感謝! –