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