?
This document uses PHP Chinese website manual Release
SHUTDOWN [NOSAVE|SAVE]
自1.0.0起可用。
命令行為如下:
停止所有的客戶端。
如果至少配置了一個(gè)保存點(diǎn),則執(zhí)行阻塞保存。
如果啟用了 AOF ,請(qǐng)刷新僅附加文件。
退出服務(wù)器。
如果啟用了持久性,則此命令可確保 Redis 在不丟失任何數(shù)據(jù)的情況下關(guān)閉。如果客戶端僅使用 SAVE ,然后退出,則不能保證,因?yàn)槠渌蛻舳丝赡軙?huì)更改這兩個(gè)命令之間的數(shù)據(jù)庫數(shù)據(jù)。
注意:配置為不保存在磁盤上的 Redis 實(shí)例(未配置 AOF ,也未配置 “save” 指令)不會(huì)將 RDB 文件轉(zhuǎn)儲(chǔ)到 SHUTDOWN 上,因?yàn)橥ǔ2幌M?Redis 實(shí)例僅用于緩存以阻止關(guān)閉。
可以指定一個(gè)可選的修飾符來改變命令的行為。特別:
即使未配置保存點(diǎn),SHUTDOWN SAVE 也會(huì)強(qiáng)制執(zhí)行 DB 保存操作。
即使配置了一個(gè)或多個(gè)保存點(diǎn),SHUTDOWN NOSAVE 也會(huì)阻止數(shù)據(jù)庫保存操作。(你可以把這個(gè)變種看作是一個(gè)假設(shè)的 ABORT 命令,它只是停止服務(wù)器)。
當(dāng)僅附加文件啟用時(shí),關(guān)機(jī)可能失敗,因?yàn)橄到y(tǒng)處于不允許安全立即保留在磁盤上的狀態(tài)。
通常情況下,如果有一個(gè) AOF 子進(jìn)程執(zhí)行 AOF 重寫,則 Redis 將簡(jiǎn)單地殺死它并退出。但是,有兩種情況不安全,因此 SHUTDOWN 命令將被拒絕并返回錯(cuò)誤。發(fā)生這種情況時(shí):
用戶剛打開 AOF ,服務(wù)器觸發(fā)了第一次AOF重寫,以創(chuàng)建初始 AOF 文件。在這種情況下,停止將導(dǎo)致完全丟失數(shù)據(jù)集:一旦重新啟動(dòng),服務(wù)器可能會(huì)啟用 AOF ,而根本沒有任何 AOF 文件。
啟用了 AOF 的從站,與其主站重新連接,執(zhí)行完全重新同步,并重新啟動(dòng) AOF 文件,觸發(fā)初始 AOF 創(chuàng)建過程。在這種情況下,不完成 AOF 重寫是很危險(xiǎn)的,因?yàn)閺闹髟O(shè)備收到的最新數(shù)據(jù)集將丟失。新的主服務(wù)器實(shí)際上可以是一個(gè)不同的實(shí)例(如果 SLAVEOF 命令用于重新配置從服務(wù)器),所以重要的是完成 AOF 重寫并在服務(wù)器啟動(dòng)時(shí)使用表示內(nèi)存中數(shù)據(jù)集的正確數(shù)據(jù)集被終止。
有條件的時(shí)候,我們只想盡快終止一個(gè) Redis 實(shí)例,不管它的內(nèi)容是什么。在這種情況下,命令的正確組合是發(fā)送 CONFIG 附加否,然后是 SHUTDOWN NOSAVE 。如果需要,第一個(gè)命令將關(guān)閉 AOF ,如果有一個(gè)活動(dòng)的話,將終止 AOF 重寫子。由于 AOF 不再被啟用,第二個(gè)命令不會(huì)執(zhí)行任何問題。
簡(jiǎn)單的字符串回復(fù)錯(cuò)誤。成功后,服務(wù)器退出并關(guān)閉連接后不會(huì)返回任何內(nèi)容。