乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Redis 3.0.5 集群的命令、使用、維護(hù)

       Baruch 2017-11-19

      cluster命令

      復(fù)制代碼
      CLUSTER INFO 打印集群的信息
      CLUSTER NODES 列出集群當(dāng)前已知的所有節(jié)點(diǎn)(node),以及這些節(jié)點(diǎn)的相關(guān)信息。 
      //節(jié)點(diǎn)
      CLUSTER MEET <ip> <port> 將 ip 和 port 所指定的節(jié)點(diǎn)添加到集群當(dāng)中,讓它成為集群的一份子。
      CLUSTER FORGET <node_id> 從集群中移除 node_id 指定的節(jié)點(diǎn)。
      CLUSTER REPLICATE <node_id> 將當(dāng)前節(jié)點(diǎn)設(shè)置為 node_id 指定的節(jié)點(diǎn)的從節(jié)點(diǎn)。
      CLUSTER SAVECONFIG 將節(jié)點(diǎn)的配置文件保存到硬盤里面。
      CLUSTER ADDSLOTS <slot> [slot ...] 將一個(gè)或多個(gè)槽(slot)指派(assign)給當(dāng)前節(jié)點(diǎn)。
      CLUSTER DELSLOTS <slot> [slot ...] 移除一個(gè)或多個(gè)槽對(duì)當(dāng)前節(jié)點(diǎn)的指派。
      CLUSTER FLUSHSLOTS 移除指派給當(dāng)前節(jié)點(diǎn)的所有槽,讓當(dāng)前節(jié)點(diǎn)變成一個(gè)沒(méi)有指派任何槽的節(jié)點(diǎn)。
      CLUSTER SETSLOT <slot> NODE <node_id> 將槽 slot 指派給 node_id 指定的節(jié)點(diǎn)。
      CLUSTER SETSLOT <slot> MIGRATING <node_id> 將本節(jié)點(diǎn)的槽 slot 遷移到 node_id 指定的節(jié)點(diǎn)中。
      CLUSTER SETSLOT <slot> IMPORTING <node_id> 從 node_id 指定的節(jié)點(diǎn)中導(dǎo)入槽 slot 到本節(jié)點(diǎn)。
      CLUSTER SETSLOT <slot> STABLE 取消對(duì)槽 slot 的導(dǎo)入(import)或者遷移(migrate)。 
      //鍵
      CLUSTER KEYSLOT <key> 計(jì)算鍵 key 應(yīng)該被放置在哪個(gè)槽上。
      CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的鍵值對(duì)數(shù)量。
      CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 個(gè) slot 槽中的鍵。 
      //新增
      CLUSTER SLAVES node-id 返回一個(gè)master節(jié)點(diǎn)的slaves 列表
      復(fù)制代碼

      redis 有很多命令,同意,加入到cluster后,也有一些列的命令,現(xiàn)在一一來(lái)看下 (http:///commands/cluster-addslots):

       

      我們來(lái)一個(gè)一個(gè)的實(shí)踐一下。

      我按照上一篇的理論實(shí)踐知識(shí)的基礎(chǔ)上,再次搭建了一個(gè)集群,這次運(yùn)行了8個(gè)端口,用實(shí)際的ip代替127.0.0.1: 

      redis-trib.rb create --replicas 1 192.168.33.13:7000 192.168.33.13:7001 
      192.168.33.13:7002 192.168.33.13:7003 192.168.33.13:7004 192.168.33.13:7005
      192.168.33.13:7006 192.168.33.13:7007 192.168.33.13:7008

       

      這個(gè)命令過(guò)后,就會(huì)創(chuàng)建一個(gè)redis cluster 集群,包括4個(gè)Master5個(gè)slave。OK,現(xiàn)在我們來(lái)一一試一下上述的CLUSTER *命令。

      cluster info

      這個(gè)命令是顯示當(dāng)前連接的集群的各種信息。

      復(fù)制代碼
      [root@web3 7008]# redis-cli -c -p 7000
      127.0.0.1:7000> cluster info
      cluster_state:ok
      cluster_slots_assigned:16384
      cluster_slots_ok:16384
      cluster_slots_pfail:0
      cluster_slots_fail:0
      cluster_known_nodes:9
      cluster_size:4
      cluster_current_epoch:9
      cluster_my_epoch:1
      cluster_stats_messages_sent:41417
      cluster_stats_messages_received:41417
      cluster_state:集群的狀態(tài)。ok表示集群是成功的,如果至少有一個(gè)solt壞了,就將處于error狀態(tài)。
      cluster_slots_assigned:有多少槽點(diǎn)被分配了,如果是16384,表示全部槽點(diǎn)已被分配。
      cluster_slots_ok:多少槽點(diǎn)狀態(tài)是OK的, 16384 表示都是好的。
      cluster_slots_pfail:多少槽點(diǎn)處于暫時(shí)疑似下線[PFAIL]狀態(tài),這些槽點(diǎn)疑似出現(xiàn)故障,但并不表示是有問(wèn)題,也會(huì)繼續(xù)提供服務(wù)。
      cluster_slots_fail:多少槽點(diǎn)處于暫時(shí)下線[FAIL]狀態(tài),這些槽點(diǎn)已經(jīng)出現(xiàn)故障,下線了。等待修復(fù)解決。
      cluster_known_nodes:已知節(jié)點(diǎn)的集群中的總數(shù),包括在節(jié)點(diǎn) 握手的狀態(tài)可能不是目前該集群的成員。這里總公有9個(gè)。
      cluster_size:(The number of master nodes serving at least one hash slot in the cluster) 簡(jiǎn)單說(shuō)就是集群中主節(jié)點(diǎn)[Master]的數(shù)量。
      cluster_current_epoch:本地當(dāng)前時(shí)期變量。這是使用,以創(chuàng)造獨(dú)特的不斷增加的版本號(hào)過(guò)程中失敗接管。{不懂}
      cluster_my_epoch:這是分配給該節(jié)點(diǎn)的當(dāng)前配置版本。{不懂} 
      cluster_stats_messages_sent:通過(guò)群集節(jié)點(diǎn)到節(jié)點(diǎn)的二進(jìn)制總線發(fā)送的消息數(shù)。 
      cluster_stats_messages_received:通過(guò)群集節(jié)點(diǎn)到節(jié)點(diǎn)的二進(jìn)制總線上接收?qǐng)?bào)文的數(shù)量。
      復(fù)制代碼

      cluster nodes

      獲取集群上的所有的節(jié)點(diǎn)信息。一般這個(gè)命令用的比較多。

      復(fù)制代碼
      127.0.0.1:7008> cluster nodes
      8916fb224bbae3dc0291ca47e066dca0a62fba19 192.168.33.13:7004 slave 3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 0 1446115185933 5 connected
      404cf1ecf54d4df46d5faaec4103cfdf67888ad2 192.168.33.13:7001 master - 0 1446115184929 2 connected 4096-8191
      a035546046a607487436cf354c187b1712edf39b 192.168.33.13:7006 slave 6f5cd78ee644c1df9756fc11b3595403f51216cc 0 1446115184929 7 connected
      6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 master - 0 1446115185432 3 connected 8192-12287
      f325d80e770ce319e4490818a49bad033cce942c 192.168.33.13:7008 myself,slave 3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 0 0 9 connected
      e357bea5151b32a971c1f7a5788271106195f99a 192.168.33.13:7005 slave 404cf1ecf54d4df46d5faaec4103cfdf67888ad2 0 1446115186435 6 connected
      3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 192.168.33.13:7000 master - 0 1446115184426 1 connected 0-4095
      6650a95b874cacf399f174cb7a1b3802fc9bcef9 192.168.33.13:7007 slave 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 0 1446115184426 8 connected
      35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 master - 0 1446115184426 4 connected 12288-16383
      復(fù)制代碼

      先看下每一條的結(jié)構(gòu):

      <id> <ip:port> <flags> <master> <ping-sent> <pong-recv> <config-epoch> <link-state> <slot> <slot> ... <slot>

      [節(jié)點(diǎn)id] [ip:端口] [標(biāo)志(master、myself、salve)] [(- 或者主節(jié)id)] [ping發(fā)送的毫秒U(xiǎn)NIX時(shí)間,0表示沒(méi)有ping] [pong接收的unix毫秒時(shí)間戳] [配置-epoch] [連接狀態(tài)] [槽點(diǎn)]

      cluster meet

      將 ip 和 port 所指定的節(jié)點(diǎn)添加到集群當(dāng)中,讓它成為集群的一份子

      我們一般會(huì)用redis-trib.rb add-node 192.168.33.13:7009 192.168.33.13:7000 這種方式將一個(gè)節(jié)點(diǎn)加入隊(duì)列。這是不需要連接redis-cli客戶端。

      其實(shí),也可以用cluster meet命令,使用方法:

      cluster meet <ip> <port>

      我們來(lái)實(shí)踐下,新建一個(gè)7009新節(jié)點(diǎn),然后試著用這個(gè)命令加入到集群中來(lái):

      127.0.0.1:7000> cluster meet 192.168.33.13 7009
      OK
      127.0.0.1:7000> cluster nodes
      ....
      70795a3a7b93b7d059124e171cd46ba1683d6b7d 192.168.33.13:7009 master - 0 1446198910590 0 connected
      現(xiàn)在7009已經(jīng)成功加入到來(lái)集群當(dāng)中,同樣,還沒(méi)有分配槽點(diǎn)給它。槽點(diǎn)分配在下面的命令中再仔細(xì)說(shuō)。

      cluster forget

      從集群中移除一個(gè)節(jié)點(diǎn)。這個(gè)功能:

      redis-trib del-node 192.168.33.13:7009 `<node-id>`

      類似。同樣,刪除從節(jié)點(diǎn),可以直接刪除。刪除主節(jié)點(diǎn),要是有slot的話需要先遷移。

      我們就來(lái)刪除上一步加的這個(gè)192.168.33.13 7009,他是一個(gè)master 節(jié)點(diǎn),但是里面還沒(méi)分配slot,所以,我們刪除試一下:

      使用方法為:

       cluster forget <node_id>

      開(kāi)始:

      127.0.0.1:7000> cluster forget 70795a3a7b93b7d059124e171cd46ba1683d6b7d
      OK

      提示OK了,說(shuō)明已經(jīng)成功了。

      再看下node 列表:

       
      復(fù)制代碼
      127.0.0.1:7000> cluster nodes
      a035546046a607487436cf354c187b1712edf39b 192.168.33.13:7006 slave 6f5cd78ee644c1df9756fc11b3595403f51216cc 0 1448519211988 7 connected
      f325d80e770ce319e4490818a49bad033cce942c 192.168.33.13:7008 slave 3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 0 1448519212994 9 connected
      e357bea5151b32a971c1f7a5788271106195f99a 192.168.33.13:7005 slave 404cf1ecf54d4df46d5faaec4103cfdf67888ad2 0 1448519213499 6 connected
      8916fb224bbae3dc0291ca47e066dca0a62fba19 192.168.33.13:7004 slave 3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 0 1448519212994 5 connected
      35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 master - 0 1448519211485 4 connected 12288-16383
      3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 192.168.33.13:7000 myself,master - 0 0 1 connected 0-4095
      6650a95b874cacf399f174cb7a1b3802fc9bcef9 192.168.33.13:7007 slave 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 0 1448519212493 8 connected
      6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 master - 0 1448519213499 3 connected 8192-12287
      404cf1ecf54d4df46d5faaec4103cfdf67888ad2 192.168.33.13:7001 master - 0 1448519213499 2 connected 4096-8191
      復(fù)制代碼

      嗯。節(jié)點(diǎn)被移除了。

      但是,其實(shí)是沒(méi)有真正移除!不知道為啥。

      復(fù)制代碼
       
      [vagrant@web3 7009]$ redis-trib.rb check 192.168.33.13:7009
      Connecting to node 192.168.33.13:7009: OK
      Connecting to node 192.168.33.13:7004: OK
      Connecting to node 192.168.33.13:7007: OK
      Connecting to node 192.168.33.13:7000: OK
      Connecting to node 192.168.33.13:7008: OK
      Connecting to node 192.168.33.13:7006: OK
      Connecting to node 192.168.33.13:7003: OK
      Connecting to node 192.168.33.13:7005: OK
      Connecting to node 192.168.33.13:7001: OK
      Connecting to node 192.168.33.13:7002: OK
      復(fù)制代碼

      進(jìn)程也還在。

      [vagrant@web3 7009]$ ps -ef|grep redis
      root 3017 1 0 Nov23 ? 00:04:24 redis-server *:7009 [cluster]

      而且也還能連上:

       
      [vagrant@web3 7009]$ redis-cli -p 7009 -c
      127.0.0.1:7009> cluster nodes
      70795a3a7b93b7d059124e171cd46ba1683d6b7d 192.168.33.13:7009 myself,master - 0 0 0 connected

      日了狗了!?。?!為啥啊。不管啦。繼續(xù)。

      cluster replicate

      當(dāng)前節(jié)點(diǎn)設(shè)置為 node_id 指定的節(jié)點(diǎn)的從節(jié)點(diǎn)

      既然剛才沒(méi)把7009刪掉,那就用這個(gè)命令把它設(shè)置成7003的從節(jié)點(diǎn)吧。

      使用方法為:

       cluster replicate <master_nodeId>

      先用7009連接

       
      [root@web3 7009]# redis-cli -p 7009 -c
      127.0.0.1:7009> cluster replicate 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce
      OK

      OK了,說(shuō)明成功了,我們?cè)倏聪拢?/p>

       
      127.0.0.1:7009> cluster nodes
      ...
      b3917e10123230f2f5b0e2c948a7eeda7f88ccf7 192.168.33.13:7009 myself,slave 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 0 0 0 connected
      357bea5151b32a971c1f7a5788271106195f99a 192.168.33.13:7003 master - 0 1448525721782 4 connected 12288-16383

      OK,說(shuō)明設(shè)置成功了,那我推出cliredis-trib看下:

       
      復(fù)制代碼
      [root@web3 7009]# redis-trib.rb check 192.168.33.13:7000
      Connecting to node 192.168.33.13:7009: OK
      M: 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003
      slots:12288-16383 (4096 slots) master
      2 additional replica(s)
      S: 6650a95b874cacf399f174cb7a1b3802fc9bcef9 192.168.33.13:7007
      slots: (0 slots) slave
      replicates 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce
      S: b3917e10123230f2f5b0e2c948a7eeda7f88ccf7 192.168.33.13:7009
      slots: (0 slots) slave
      replicates 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce
      復(fù)制代碼

      成功了!

      cluster saveconfig

      將節(jié)點(diǎn)的配置文件保存到硬盤里面.

      試一下:

       
      127.0.0.1:7009> cluster saveconfig
      OK

      ok說(shuō)明成功了,它會(huì)覆蓋配置文件夾里的nodes.conf文件。這樣做是為了某種情況下nodes文件丟失,這樣就會(huì)生成一個(gè)最新的節(jié)點(diǎn)配置文件。

      為了說(shuō)明是新生成的,我們可以先刪除掉7009目錄下的nodes.conf文件:

      復(fù)制代碼
      [root@web3 7009]# ll
      total 52
      -rw-r--r-- 1 root root 0 Nov 26 08:14 appendonly.aof
      -rw-r--r-- 1 root root 18 Nov 26 08:14 dump.rdb
      -rw-r--r-- 1 root root 1269 Nov 26 08:50 nodes.conf
      -rw-r--r-- 1 root root 41550 Oct 30 03:40 redis.conf
      [root@web3 7009]# rm -rf nodes.conf
      [root@web3 7009]# ll
      total 42
      -rw-r--r-- 1 root root 0 Nov 26 08:14 appendonly.aof
      -rw-r--r-- 1 root root 18 Nov 26 08:14 dump.rdb
      -rw-r--r-- 1 root root 41550 Oct 30 03:40 redis.conf
      [root@web3 7009]# redis-cli -p 7009 -c
      127.0.0.1:7009> cluster saveconfig
      OK
      127.0.0.1:7009> exit
      [root@web3 7009]# ll
      total 52
      -rw-r--r-- 1 root root 0 Nov 26 08:14 appendonly.aof
      -rw-r--r-- 1 root root 18 Nov 26 08:14 dump.rdb
      -rw-r--r-- 1 root root 1269 Nov 26 08:51 nodes.conf
      -rw-r--r-- 1 root root 41550 Oct 30 03:40 redis.conf
      [root@web3 7009]#
      復(fù)制代碼

      cluster delslots

      移除當(dāng)前節(jié)點(diǎn)的一個(gè)或多個(gè)槽點(diǎn)。只能刪除自己的節(jié)點(diǎn),刪除別人的沒(méi)用。

      因?yàn)閙aster才會(huì)有槽點(diǎn),所以,也是只能在master 節(jié)點(diǎn)上操作,在slave 操作也沒(méi)用。

      用法是:

      cluster delslots slots1 slotes2 slots3

      我們看一下槽點(diǎn)的分配情況:

      [root@web3 7009]# redis-cli -p 7009 -c cluster nodes| grep master
      3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 192.168.33.13:7000 master - 0 1448529511113 1 connected 0-4095
      404cf1ecf54d4df46d5faaec4103cfdf67888ad2 192.168.33.13:7001 master - 0 1448529511113 2 connected 4096-8191
      6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 master - 0 1448529509101 3 connected 8192-12287
      35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 master - 0 1448529510609 4 connected 12288-16383

      4臺(tái)master,那就把16381 16382 16383 3個(gè)槽點(diǎn)給刪掉。

      開(kāi)始:

       
      [root@web3 7009]# redis-cli -p 7003
      127.0.0.1:7003> cluster delslots 16381 16382 16383
      OK
      127.0.0.1:7003> cluster nodes
      35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 myself,master - 0 0 4 connected 12288-16380

      看,7003的缺失少了3個(gè)節(jié)點(diǎn)。我們?cè)诳聪?code>cluster info

      127.0.0.1:7003> cluster info
      cluster_state:fail
      cluster_slots_assigned:16381
      cluster_slots_ok:16381
      只有16381個(gè),確實(shí)少了4個(gè)。但是,注意:cluster_state:fail,集群失敗了!??!

      為什么呢?為什么刪除了3個(gè)槽點(diǎn)就失敗了呢。因?yàn)榧壕褪且獫M足所有的16364個(gè)槽點(diǎn)全部分配才會(huì)成功。所以。就失敗了。

      數(shù)據(jù)讀取自然也會(huì)失敗:

       
      127.0.0.1:7003> get name
      (error) CLUSTERDOWN The cluster is down

      我們用redis-trib檢查一下,就知道了:

      復(fù)制代碼
      [root@web3 7009]# redis-trib.rb check 192.168.33.13:7000
      ...
      ...
      [ERR] Nodes don't agree about configuration!
      >>> Check for open slots...
      >>> Check slots coverage...
      [ERR] Not all 16384 slots are covered by nodes.
      復(fù)制代碼

      那如何挽救呢?那就順便看下下面的這個(gè)命令吧。

      cluster addslots

      將一個(gè)或多個(gè)槽(slot)指派(assign)給當(dāng)前節(jié)點(diǎn)。

      用法是:

      cluster addslots slots1 slotes2 slots3
      那,我就用這個(gè)命令將上面刪掉的3個(gè)槽點(diǎn)再加到7003上看看:
      127.0.0.1:7003> cluster addslots 16381 16382 16383
      OK
      127.0.0.1:7003>

      OK了,看下是不是真的成功了: 

      127.0.0.1:7003> cluster nodes
      35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 myself,master - 0 0 4 connected 12288-16383

      確實(shí)回來(lái)了,再看下集群狀態(tài),啟動(dòng)了沒(méi)?

      127.0.0.1:7003> cluster info
      cluster_state:ok

      數(shù)據(jù)讀取也正常了:

       
      127.0.0.1:7003> get name
      -> Redirected to slot [5798] located at 192.168.33.13:7001
      "123"
      192.168.33.13:7001>

      cluster flushslots

      移除當(dāng)前節(jié)點(diǎn)所有槽點(diǎn),讓當(dāng)前節(jié)點(diǎn)變成一個(gè)沒(méi)有指派任何槽的節(jié)點(diǎn)。

      我們還是拿7003來(lái)開(kāi)刀吧。誰(shuí)叫它在最后呢哈哈哈哈哈哈??

       
      [root@web3 ~]# redis-cli -p 7003 -c
      127.0.0.1:7003> cluster flushslots
      OK

      ok了,理論上7003上的槽點(diǎn)應(yīng)該都被移除了,它被懸空了,那么集群也應(yīng)該失效了吧。看看:

      127.0.0.1:7003> cluster info
      cluster_state:fail
      cluster_slots_assigned:12288
      cluster_slots_ok:12288

      果然,移除了7003的所有4006個(gè)槽點(diǎn),而且集群也失敗了。用redis-trib看看。

       
      復(fù)制代碼
      [root@web3 ~]# redis-trib.rb check 192.168.33.13:7000
      M: 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003
      slots: (0 slots) master
      2 additional replica(s)
      [ERR] Nodes don't agree about configuration!
      >>> Check for open slots...
      >>> Check slots coverage...
      [ERR] Not all 16384 slots are covered by nodes.
      復(fù)制代碼

      可憐的7003上,已經(jīng)沒(méi)有任何slot了。

      cluster setslot <\slot> node <\node_id>

      將slot 指派給 node_id指定的節(jié)點(diǎn),如果槽已經(jīng)指派給另一個(gè)節(jié)點(diǎn),那么先讓另一個(gè)節(jié)點(diǎn)刪除該槽,然后再進(jìn)行指派。

      剛才7003的全部slot已經(jīng)空出來(lái)了,那用這個(gè)命令試一下轉(zhuǎn)移。

      開(kāi)始搞,把12288-16384 這中間的幾個(gè)節(jié)點(diǎn)移動(dòng)到7002上去。

      127.0.0.1:7003> cluster setslot 16383 node 6f5cd78ee644c1df9756fc11b3595403f51216cc
      OK
      127.0.0.1:7003> cluster setslot 16382 node 6f5cd78ee644c1df9756fc11b3595403f51216cc
      OK

      媽的,這個(gè)命令只能一個(gè)一個(gè)的移動(dòng),太變態(tài)了!??!

      那看看。剛才移動(dòng)的幾個(gè)好了沒(méi)?

       
      127.0.0.1:7003> cluster nodes
      6f5cd78ee644c1df9756fc11b3595403f51216cc 
      192.168.33.13:7002 master - 0 1448611602575 3 connected 8192-12287 16382-16383

      果然,這2個(gè)slot被移動(dòng)過(guò)來(lái)了。那,再移動(dòng)下,把 16382 丟給 7000看看:

      127.0.0.1:7003> cluster setslot 16382 node 3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da
      OK

      看看好了沒(méi)?

       
      127.0.0.1:7003> cluster nodes
      3d2b7dccfc45ae2eb7aeb9e0bf001b0ac8f7b3da 192.168.33.13:7000 master - 0 1448611827539 1 connected 0-4095 16382

      嗯,已經(jīng)移動(dòng)過(guò)來(lái)了。

      cluster setslot <\slot> migrating <\destination-node-id>

      本節(jié)點(diǎn)的槽 slot 遷移到 node_id 指定的節(jié)點(diǎn)中

      試一下 16382 ,把她給移會(huì)去??蓱z。。。

       
      [root@web3 7000]# redis-cli -p 7002 -c
      127.0.0.1:7002> cluster setslot 16383 migrating 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce
      (error) ERR I'm not the owner of hash slot 16383

      居然出錯(cuò)了?。?!為啥啊。說(shuō) 16383 不是 7002的槽點(diǎn),無(wú)法移動(dòng)。我了個(gè)叉,怎么會(huì)不是呢?

      我看下:

      6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 myself,master - 0 0 3 connected 8192-12287
      35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 master - 0 1448619265700 4 connected 12288-16383

      我了個(gè)擦的。確實(shí)不是啊。我明明已經(jīng)把7003的槽點(diǎn)全部置空了啊,為什么這里還有啊。日了狗啊。

      進(jìn) 7003看看呢? 

      [root@web3 7000]# redis-cli -p 7003 -c

      看看:

      127.0.0.1:7003> cluster nodes
      35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 myself,master - 0 0 4 connected
      6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 master - 0 1448619384580 3 connected 8192-12287 16383

      嗶了狗了,居然2邊的信息不一樣?。?!我擦。這尼瑪。

      我退出去check看看。

       
      [root@web3 7000]# redis-trib.rb check 192.168.33.13:7000

      看看結(jié)果: 

      復(fù)制代碼
      M: 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003
      slots: (0 slots) master
      2 additional replica(s)
      M: 6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002
      slots:8192-12287 (4096 slots) master
      1 additional replica(s)
      復(fù)制代碼

      我日了,16383 和 16382 用上面的setslot <slot> node <node_id>根本沒(méi)移動(dòng)過(guò)去,這尼瑪。無(wú)語(yǔ)了。。。不管了吧。繼續(xù)下面的命令學(xué)習(xí)吧。

      cluster setslot <\slot> importing <\node_id>

      從 node_id 指定的節(jié)點(diǎn)中導(dǎo)入 slot 到本節(jié)點(diǎn)。

      上面的命令居然失效了,日了狗,現(xiàn)在看下這個(gè)命令呢?

       
      127.0.0.1:7003> cluster setslot 16383 importing 6f5cd78ee644c1df9756fc11b3595403f51216cc
      OK
      127.0.0.1:7003>

      將 7002 上的 18383轉(zhuǎn)移到 7003上來(lái),居然成功了。好吧。??

       
      127.0.0.1:7003> cluster nodes
      35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 myself,master - 0 0 4 connected
      [16383-
      <-6f5cd78ee644c1df9756fc11b3595403f51216cc] 6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 master - 0 1448621921706 3 connected 8192-12287 16383

      居然顯示成這樣的,屌屌屌。然而,16383還在 7002上。哎。無(wú)法理解。

      check 下:

       
      復(fù)制代碼
      [root@web3 7000]# redis-trib.rb check 192.168.33.13:7000
      ...
      M: 35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003
      slots: (0 slots) master
      2 additional replica(s)
      ...
      >>> Check for open slots...
      [WARNING] Node 192.168.33.13:7003 has slots in importing state (16383).
      [WARNING] The following slots are open: 16383
      >>> Check slots coverage...
      [ERR] Not all 16384 slots are covered by nodes.
      復(fù)制代碼

      它提示集群失敗,說(shuō)正在導(dǎo)入!什么鬼啊。完全搞不懂。跳過(guò)吧,看下一個(gè)命令:

      cluster setslot <\slot> stable

      取消 slot 的導(dǎo)入(import)或者遷移(migrate)。

      這個(gè)命令屌啊,還可以反悔啊。趕緊試一試:

       
      127.0.0.1:7003> cluster setslot 16383 stable
      OK

      看下回去了沒(méi)? 

      127.0.0.1:7003> cluster nodes
      35bdcb51ceeff00f9cc608fa1b4364943c7c07ce 192.168.33.13:7003 myself,master - 0 0 4 connected
      6f5cd78ee644c1df9756fc11b3595403f51216cc 192.168.33.13:7002 master - 0 1448623146511 3 connected 8192-12287 16383

      果然回去了,贊贊贊。再 check 下:

       
      [ERR] Nodes don't agree about configuration!
      >>> Check for open slots...
      >>> Check slots coverage...
      [ERR] Not all 16384 slots are covered by nodes.

      剛才那個(gè)錯(cuò)誤消息了。好吧。繼續(xù)學(xué)習(xí)其它命令吧。

      cluster keyslot <\key>

      計(jì)算鍵 key 應(yīng)該被放置在哪個(gè)槽上。這個(gè)是個(gè)蠻不錯(cuò)的功能。有時(shí)候很想找一個(gè)key在哪個(gè)節(jié)點(diǎn)??聪履懿荒苡?。

       
      復(fù)制代碼
      127.0.0.1:7000> cluster keyslot name
      (integer) 5798
      127.0.0.1:7000> get name
      -> Redirected to slot [5798] located at 192.168.33.13:7001
      "123"
      192.168.33.13:7001>
      復(fù)制代碼

      這個(gè)很簡(jiǎn)單,就是一個(gè)運(yùn)算,之前也講過(guò): CRC16('name')%16384 = 5798

      cluster countkeysinslot <\slot>

      計(jì)算一個(gè)slot 包含多少個(gè)key。這也是一個(gè)很使用的小功能。

      試一下:

       
      192.168.33.13:7001> cluster countkeysinslot 5798
      (integer) 1

      由于是測(cè)試,所以,slot里數(shù)據(jù)很少,這里顯示1個(gè),估計(jì)就是上面的name

      cluster getkeysinslot <\slot> <\count>

      返回 一個(gè) slot 中 count 個(gè) key 的集合。 也是一個(gè)蠻實(shí)用的功能。

      試一下:

      127.0.0.1:7000> cluster getkeysinslot 5798 1
      (empty list or set)

       那設(shè)置幾個(gè)值吧:

        
      復(fù)制代碼
      192.168.33.13:7000> set name1 yangyi
      -> Redirected to slot [12933] located at 192.168.33.13:7003
      OK
      192.168.33.13:7003> set name2 yangyi
      -> Redirected to slot [742] located at 192.168.33.13:7000
      OK
      192.168.33.13:7000> set name3 yangyi
      -> Redirected to slot [4807] located at 192.168.33.13:7001
      OK
      192.168.33.13:7001> set name4 yangyi
      -> Redirected to slot [8736] located at 192.168.33.13:7002
      OK
      192.168.33.13:7002> set name5 yangyi
      -> Redirected to slot [12801] located at 192.168.33.13:7003
      OK
      192.168.33.13:7003> set name6 yangyi
      -> Redirected to slot [610] located at 192.168.33.13:7000
      OK
      192.168.33.13:7000> set name7 yangyi
      -> Redirected to slot [4675] located at 192.168.33.13:7001
      OK
      192.168.33.13:7001>
      復(fù)制代碼
      好。我們?cè)偃∫幌拢?/span>
      192.168.33.13:7001> cluster getkeysinslot 4675 1
      1) "name7"

      cluster slaves <\node-id>

      返回一個(gè)master節(jié)點(diǎn)的slaves 列表 

      192.168.33.13:7001> cluster slaves 7b39b81b5ba94a9f4d96931dd0879cc13dab6f07
      1) "f8c7a3113497d8d828bdb05fec4041b382e5fd0a 192.168.33.13:7005 slave 7b39b81b5ba94a9f4d96931dd0879cc13dab6f07
      0 1450671948824 6 connected"

      cluster nodes命令查看的結(jié)果是一樣的。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多