?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
CLIENT PAUSE timeout
自2.9.50起可用。
時間復(fù)雜度: O(1)
CLIENT PAUSE 是一個連接控制命令,它能夠在指定的時間內(nèi)(以毫秒為單位)掛起所有 Redis 客戶端。
該命令執(zhí)行以下操作:
它會停止處理來自普通客戶端和發(fā)布/訂閱客戶端的所有未決命令。然而,與從站的互動將繼續(xù)正常。
但是,對調(diào)用方 ASAP 返回 OK ,因此 CLIENT PAUSE 命令執(zhí)行不會自行暫停。
當(dāng)指定的時間已過時,所有客戶端都將被解除阻塞:這將觸發(fā)在暫停期間處理每個客戶端的查詢緩沖區(qū)中累積的所有命令。
該命令非常有用,因為它能夠以受控方式將客戶端從 Redis 實例切換到另一個實例。例如,在實例升級期間,系統(tǒng)管理員可以執(zhí)行以下操作:
使用 CLIENT PAUSE 暫停客戶端
等待幾秒鐘以確保從服務(wù)器處理來自主服務(wù)器的最新復(fù)制流。
把其中一個從站變成主站。
重新配置客戶端以連接新主服務(wù)器。
可以在 MULTI / EXEC 塊中將 CLIENT PAUSE 與INFO replication
命令一起發(fā)送,以便在客戶端被阻止時獲得當(dāng)前的主站偏移量。這樣就可以等待從屬端的特定偏移量,以確保處理所有的復(fù)制流。
由于 Redis 3.2.10 / 4.0.0 ,此命令還可以防止在客戶端暫停期間鍵被驅(qū)逐或過期。這樣,不僅從客戶端無法寫入的角度,而且從內(nèi)部操作的角度來看,數(shù)據(jù)集保證是靜態(tài)的。
簡單字符串回復(fù):如果超時無效,則該命令返回 OK 或錯誤。