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