?
This document uses PHP Chinese website manual Release
CLUSTER NODES
自3.0.0起可用。
時(shí)間復(fù)雜度: O(N)其中N是 Cluster 節(jié)點(diǎn)的總數(shù)
Redis 集群中的每個(gè)節(jié)點(diǎn)都有其當(dāng)前集群配置的視圖,由已知節(jié)點(diǎn)的集合給出,我們與這些節(jié)點(diǎn)的連接狀態(tài),它們的標(biāo)志,屬性和分配的槽等等。
CLUSTER NODES 以串行格式提供所有這些信息,即我們正在聯(lián)系的節(jié)點(diǎn)的當(dāng)前集群配置,該格式恰好與 Redis Cluster 自身使用的格式相同,以便在磁盤上存儲(chǔ)集群狀態(tài)(但磁盤群集狀態(tài)在最后附加了一些附加信息)。
請(qǐng)注意,通常情況下,希望在 Cluster 哈希槽和節(jié)點(diǎn)地址之間獲取映射的客戶端應(yīng)該使用 CLUSTER SLOTS。提供更多信息的 CLUSTER NODES 應(yīng)該用于管理任務(wù),調(diào)試和配置檢查。它也用于redis-trib
管理群集。
命令的輸出只是一個(gè)空格分隔的 CSV 字符串,其中每行代表集群中的一個(gè)節(jié)點(diǎn)。以下是輸出示例:
07c37dfeb235213a872192d90877d0cd55635b91 127.0.0.1:30004 slave e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 0 1426238317239 4 connected 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 127.0.0.1:30002 master - 0 1426238316232 2 connected 5461-10922 292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 127.0.0.1:30003 master - 0 1426238318243 3 connected 10923-16383 6ec23923021cf3ffec47632106199cb7f496ce01 127.0.0.1:30005 slave 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 0 1426238316232 5 connected 824fe116063bc5fcf9f4ffd895bc17aee7731ac3 127.0.0.1:30006 slave 292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 0 1426238317741 6 connected e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 127.0.0.1:30001 myself,master - 0 0 1 connected 0-5460
每行由以下字段組成:
<id> <ip:port> <flags> <master> <ping-sent> <pong-recv> <config-epoch> <link-state> <slot> <slot> ... <slot>
每個(gè)字段的含義如下:
1. id
:節(jié)點(diǎn) ID,一個(gè)40個(gè)字符的隨機(jī)字符串,當(dāng)一個(gè)節(jié)點(diǎn)被創(chuàng)建時(shí)不會(huì)再發(fā)生變化(除非CLUSTER RESET HARD
被使用)。
2. ip:port
:客戶端應(yīng)該聯(lián)系節(jié)點(diǎn)以運(yùn)行查詢的節(jié)點(diǎn)地址。
3. flags
:逗號(hào)列表分隔的標(biāo)志:myself
,master
,slave
,fail?
,fail
,handshake
,noaddr
,noflags
。標(biāo)志在下一節(jié)詳細(xì)解釋。
4. master
:如果節(jié)點(diǎn)是從屬節(jié)點(diǎn),并且主節(jié)點(diǎn)已知,則節(jié)點(diǎn)ID為主節(jié)點(diǎn),否則為“ - ”字符。
5. ping-sent
:以毫秒為單位的當(dāng)前激活的ping發(fā)送的unix時(shí)間,如果沒有掛起的ping,則為零。
6. pong-recv
:毫秒 unix 時(shí)間收到最后一個(gè)乒乓球。
7. config-epoch
:當(dāng)前節(jié)點(diǎn)(或當(dāng)前主節(jié)點(diǎn),如果該節(jié)點(diǎn)是從節(jié)點(diǎn))的配置時(shí)期(或版本)。每次發(fā)生故障切換時(shí),都會(huì)創(chuàng)建一個(gè)新的,唯一的,單調(diào)遞增的配置時(shí)期。如果多個(gè)節(jié)點(diǎn)聲稱服務(wù)于相同的哈希槽,則具有較高配置時(shí)期的節(jié)點(diǎn)將獲勝。
8. link-state
:用于節(jié)點(diǎn)到節(jié)點(diǎn)集群總線的鏈路狀態(tài)。我們使用此鏈接與節(jié)點(diǎn)進(jìn)行通信??梢允?code>connected或disconnected
。
9. slot
:散列槽號(hào)或范圍。從參數(shù)9開始,但總共可能有16384個(gè)條目(限制從未達(dá)到)。這是此節(jié)點(diǎn)提供的散列槽列表。如果條目?jī)H僅是一個(gè)數(shù)字,則被解析為這樣。如果它是一個(gè)范圍,它是在形式start-end
,并且意味著節(jié)點(diǎn)負(fù)責(zé)所有散列時(shí)隙從start
到end
包括起始和結(jié)束值。
標(biāo)志的含義(字段編號(hào)3):
myself
:您正在聯(lián)系的節(jié)點(diǎn)。
master
:節(jié)點(diǎn)是主人。
slave
:節(jié)點(diǎn)是從屬的。
fail?
:節(jié)點(diǎn)處于PFAIL
狀態(tài)。對(duì)于正在聯(lián)系的節(jié)點(diǎn)無法訪問,但仍然可以在邏輯上訪問(不處于FAIL
狀態(tài))。
fail
:節(jié)點(diǎn)處于FAIL
狀態(tài)。對(duì)于將PFAIL
狀態(tài)提升為FAIL
的多個(gè)節(jié)點(diǎn)而言,這是無法訪問的。
handshake
:不受信任的節(jié)點(diǎn),我們握手。
noaddr
:此節(jié)點(diǎn)沒有已知的地址。
noflags
:根本沒有標(biāo)志。
奴隸廣播他們的主人的配置紀(jì)元(為了得到一個(gè)UPDATE
消息,如果他們被發(fā)現(xiàn)是陳舊的),所以奴隸的真正配置時(shí)代(多少?zèng)]有意義,因?yàn)樗麄儾惶峁┥⒘胁郏┲荒苁谦@得檢查標(biāo)記為的節(jié)點(diǎn)myself
,這是我們要求生成 CLUSTER NODES 輸出的節(jié)點(diǎn)的條目。其他從屬時(shí)期反映了它們?cè)谛奶邪l(fā)布的內(nèi)容,即它們當(dāng)前正在復(fù)制的主時(shí)間的配置時(shí)期。
通常,與給定節(jié)點(diǎn)相關(guān)聯(lián)的散列槽是以下格式之一,如上所述:
1. Single number: 3894
2. Range: 3900-4000
但是,節(jié)點(diǎn)散列槽可以處于特殊狀態(tài),用于在節(jié)點(diǎn)重新啟動(dòng)后發(fā)送錯(cuò)誤(AOF / RDB文件中的鍵與節(jié)點(diǎn)散列槽配置不匹配),或者存在重新分片操作時(shí)。這兩個(gè)國(guó)家正在進(jìn)口和遷移。
Redis 規(guī)范解釋了這兩種狀態(tài)的含義,但是這兩種狀態(tài)的要點(diǎn)如下:
導(dǎo)入插槽尚未成為節(jié)點(diǎn)散列槽的一部分,因此正在進(jìn)行遷移。只有在使用ASK
命令的情況下,節(jié)點(diǎn)才會(huì)接受有關(guān)這些插槽的查詢。
遷移插槽將分配給該節(jié)點(diǎn),但正在遷移到某個(gè)其他節(jié)點(diǎn)。如果命令中的所有鍵已經(jīng)存在,節(jié)點(diǎn)將接受查詢,否則它將發(fā)出所謂的 ASK重定向,以直接在導(dǎo)入節(jié)點(diǎn)中強(qiáng)制創(chuàng)建新鍵。
導(dǎo)入和遷移插槽在 CLUSTER NODES 輸出中發(fā)出,如下所示:
導(dǎo)入插槽: [slot_number-<-importing_from_node_id]
遷移插槽: [slot_number->-migrating_to_node_id]
以下是導(dǎo)入和遷移插槽的幾個(gè)示例:
[93-<-292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f]
[1002-<-67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1]
[77->-e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca]
[16311->-292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f]
請(qǐng)注意,該格式?jīng)]有任何空格,因此 CLUSTER NODES 輸出格式為純 CSV 格式,即使在發(fā)布此特殊插槽時(shí)也會(huì)以空格作為分隔符。然而,一個(gè)完整的格式解析器應(yīng)該能夠處理它們。
注意:
1. 遷移和導(dǎo)入插槽僅添加到標(biāo)記為的節(jié)點(diǎn)myself
。該信息對(duì)于其自己的插槽是本地的節(jié)點(diǎn)。
2. 導(dǎo)入和遷移插槽作為附加信息提供。如果節(jié)點(diǎn)具有指定的給定散列槽,則它也將是散列槽列表中的普通數(shù)字,因此對(duì)散列槽遷移沒有線索的客戶端可以跳過這些特殊字段。
批量字符串回復(fù):序列化群集配置。