2020-10-23 周作業

起個名字太費勁了發表於2020-10-25

1、RDB和AOF的優缺點

RBD優點:

  1. RDB快照儲存的是某個時間點的資料,可以通過指令碼執行redis指令bgsave(非阻塞,fork出子程式後臺執行),或者save(會阻塞寫造作,不推薦)命令自定義時間點備份,可以保留多個備份,當出現問題可以恢復到不同時間點的版本,很適合備份,而且此檔案格式也支援很多第三方工具進行的後續資料分析
  2. RDB快照可以最大化redis的效能,父程式在儲存RDB檔案時唯一要做的是fork出一個子程式,然後這個子程式就會處理接下來的所有儲存工作,父程式無需執行任何磁碟I/O操作
  3. RDB在大量資料,比如幾個G的資料,恢復速度比AOF快

RDB缺點:
1.不能實時儲存資料,可能會丟失上一次執行RDB備份到當前記憶體資料,這種情況一旦發生故障當機,就可能丟失好幾分鐘的資料。
2.當資料量非常大的時候,從父程式fork子程式進行儲存RDB檔案時候需要耗一些時間,可能是毫秒或者秒,取決於磁碟I/O效能。

AOF優點:

  1. AOF和RDB一樣使用了寫時複製機制。AOF預設為每秒fsnyc一次,即將執行的命令儲存到AOF檔案中,這樣如果Redis伺服器發生故障時候最多隻對視1秒內的資料,也可以設定不同的fsnyc策略always,也就是每次執行命令的時候都會執行fsnyc,fsync會在後臺執行執行緒,所以主執行緒可以繼續處理使用者的正常請求而不會受到AOF寫入的影響,進行恢復時候,會預設AOF檔案0優先順序高於RDB檔案,會預設使用AOF快照恢復。
  2. 安全性相對較高。根據所使用的fsync策略每秒都會執行一次fsync,即使在每秒都執行fsync的情況下,依然不會影響到主執行緒的I/O效能。
  3. 由於該機制對日誌檔案的寫入操作採用的是append(追加模式),因此在寫入過程中不需要seek(請求),即使伺服器當機,也不會破壞日誌,檔案中已經存在的內容,然而如果本次操作只是寫入了一半資料就出系統故障了,沒關係,在redis下次啟動之前,可以通過redis-check-aof工具來解決資料一致性的問題。
  4. Redis可以在AOF檔案體積變得過大時候,自動地在後臺對AOF進行重寫。重寫後的新AOF檔案包含了恢復當前資料集所需的最小命令集合。整個重寫操作是絕對安全的,因為Redis在建立新 AOF檔案的過程中,append模式不斷的將修改資料追加到現有的 AOF檔案裡面,即使重寫過程中發生停機,現有的 AOF檔案也不會丟失。而一旦新AOF檔案建立完畢,Redis就會從舊AOF檔案切換到新AOF檔案,並開始對新AOF檔案進行追加操作。
  5. AOF包含一個格式清晰、易於理解的日誌檔案用於記錄所有的修改操作。

AOF缺點:
1.即使有些操作是重複的也會全部記錄下來所以AOF檔案要大於RDB檔案
2.AOF在恢復大資料集的時候速度比RDB速度要慢
3.根據fsync策略不同,AOF速度可能會慢於RDB
4.BUG出現的可能性更多

2、master和slave同步過程

實驗環境:
1.三臺centos7(非強制,但是儘量保持redis版本一致。嚴格講應該是一定保持一致!)
centos-master
centos-slave1
centos-slave2
2.關閉防火牆、Selinux

#1.分別安裝好redis服務,並設定MASTER服務配置檔案。(也可以多例項安裝)

[root@MASTER ~]#yum -y install redis
[root@Slave1 ~]#yum -y install redis
[root@Slave2 ~]#yum -y install redis
[root@MASTER ~]#vim /etc/redis.conf
bind 0.0.0.0
requirepass 123456
[root@MASTER ~]#systemctl restart redis
[root@MASTER ~]#ss -ntl 
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      100    127.0.0.1:25                         *:*                  
LISTEN      0      128            *:6379                       *:*                  
LISTEN      0      128            *:22                         *:*                  
LISTEN      0      100        [::1]:25                      [::]:*                  
LISTEN      0      128         [::]:22                      [::]:*                  

[root@MASTER ~]#redis-cli -a 123456
127.0.0.1:6379> keys *
  1) "key35"
  2) "key19"
  3) "key36"
  4) "key13"
  5) "key48"
  6) "key99"
  127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.0.0.17,port=6379,state=online,offset=18424,lag=1
slave1:ip=10.0.0.37,port=6379,state=online,offset=18424,lag=0
master_repl_offset:18424
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:18423

#2.設定Slave redis伺服器配置,兩個slave都一樣的配置

[root@Slave1 ~]#vim /etc/redis.conf
bind 0.0.0.0
slaveof 10.0.0.7 6379     #centos8 slaveof 更改為 replicaof 
masterauth 123456
[root@Slave1 ~]#systemctl restart redis

[root@Slave1 ~]#ss -ntl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      100    127.0.0.1:25                         *:*                  
LISTEN      0      128            *:6379                       *:*                  
LISTEN      0      128            *:22                         *:*                  
LISTEN      0      100        [::1]:25                      [::]:*                  
LISTEN      0      128         [::]:22                      [::]:*   

SLAVE2步驟同上

[root@slave1 ~]#redis-cli -a 123456
127.0.0.1:6379> keys *
  1) "key35"
  2) "key19"
  3) "key36"
  4) "key13"
  5) "key48"
  6) "key99"
  7) "key27"
  8) "key60"
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:10.0.0.7
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:17916
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0


[root@slave2 ~]#redis-cli -a 123456
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:10.0.0.7
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:17958
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379> keys *
  1) "key35"
  2) "key19"
  3) "key36"
  4) "key13"
  5) "key48"
  6) "key99"

3、哨兵的使用和實現機制

在這裡插入圖片描述
在這裡插入圖片描述

Sentinel原理:
哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨立的程式,作為程式,它會獨立執行。其原理是哨兵通過傳送命令,等待Redis伺服器響應,從而監控執行的多個Redis例項。

sentinel 程式是用於監控redis叢集中Master主伺服器工作的狀態,再Master主伺服器發生故障的時候,可以實現Master和Slave伺服器之間的切換,保證系統高可用,哨兵是一種分散式系統,可以在一個架構,這些程式使用流言協議(gossip protocols)來接收關於Master主伺服器是否下線的資訊,並使用投票協議(AgreementProtocols)來決定是否執行自動故障遷移,以及選擇哪個Slave作為新的Master。

Redis的哨兵(sentinel) 系統用於管理多個 Redis 伺服器,該系統執行以下三個任務:

  1. 監控(Monitoring): 哨兵(sentinel) 會不斷地檢查你的Master和Slave是否運作正常。
  2. 提醒(Notification):當被監控的某個 Redis出現問題時, 哨兵(sentinel) 可以通過 API 向管理員或者其他應用程式傳送通知。
  3. 自動故障遷移(Automatic failover):當一個Master不能正常工作時,哨兵(sentinel) 會開始一次自動故障遷移操作,它會將失效Master的其中一個Slave升級為新的Master,並讓失效Master的其他Slave改為複製新的Master;當客戶端試圖連線失效的Master時,叢集也會向客戶端返回新Master的地址,使得叢集可以使用Master代替失效Master。

Redis-Sentinel實現機制:
利用ping命令,讓Redis伺服器返回監控其執行狀態檢查是否存活,包括主伺服器和從伺服器。
當哨兵監測到master當機,會自動將slave切換成master,然後通過釋出訂閱模式通知其他的從伺服器,修改配置檔案,讓它們切換主機。
然而一個哨兵程式對Redis伺服器進行監控,可能會出現問題,為此,我們可以使用多個哨兵進行監控。各個哨兵之間還會進行監控,這樣就形成了多哨兵模式。
用文字描述一下故障切換(failover)的過程。假設主伺服器當機,哨兵1先檢測到這個結果,系統並不會馬上進行failover過程,僅僅是哨兵1主觀的認為主伺服器不可用,這個現象成為主觀下線。當後面的哨兵也檢測到主伺服器不可用,並且數量達到一定值時,那麼哨兵之間就會進行一次投票,投票的結果由一個哨兵發起,進行failover操作。切換成功後,就會通過釋出訂閱模式,讓各個哨兵把自己監控的從伺服器實現切換主機,這個過程稱為客觀下線。這樣對於客戶端而言,一切都是透明的。

4、redis cluster叢集建立和使用

在這裡插入圖片描述
#叢集節點
10.0.0.8
10.0.0.18
10.0.0.28
10.0.0.38
10.0.0.48
10.0.0.58
建立redis cluster叢集的前提:

  1. 每個redis node節點採用相同的硬體配置,相同的密碼,相同的redis版本。
  2. 每個節點必須開啟的引數
    cluster-enabled yes #必須開啟叢集狀態,開啟後redis程式會有cluster顯示。
    cluster-config-file nodes-6380.conf #此檔案有redis cluster 叢集自動建立和維護,不需要任何手動操作
  3. 所有redis伺服器必須沒有任何資料 ,原因:因為cluster要分配槽位,如果有資料,那個地方就會被佔用,槽位分配不了。
  4. 先啟動為單機redis且沒有任何key value

原生命令手動部署

#在所有節點上都執行下面相同操作
[root@Timewalk ~]#yum -y install redis
#利用sed -e 多次修改替換配置檔案
[root@Timewalk ~]#sed -i.bak -e 's/bind 127.0.0.1/bind 0.0.0.0/' -e
'/masterauth/a masterauth 123456' -e '/# requirepass/a requirepass 123456' -e
'/# cluster-enabled yes/a cluster-enabled yes' -e '/# cluster-config-file nodes-
6379.conf/a cluster-config-file nodes-6379.conf' -e '/cluster-require-full-
coverage yes/c cluster-require-full-coverage no' /etc/redis.conf
[root@Timewalk ~]#systemctl enable --now redis
[root@Timewalk ~]ss -ntl

在這裡插入圖片描述
執行meet 操作實現相互通訊
在任一節點上和其它所有節點進行meet通訊

[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster
meet 10.0.0.18 6379
[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster
meet 10.0.0.28 6379
[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster
meet 10.0.0.38 6379
[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster
meet 10.0.0.48 6379
[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster
meet 10.0.0.58 6379

#可以看到所有節點之間可以相互連線通訊

[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster nodes
a177c5cbc2407ebb6230ea7e2a7de914bf8c2dab 10.0.0.8:6379@16379 myself,master - 0
1602515365000 3 connected
97c5dcc3f33c2fc75c7fdded25d05d2930a312c0 10.0.0.18:6379@16379 master - 0
1602515367093 1 connected
cb20d58870fe05de8462787cf9947239f4bc5629 10.0.0.38:6379@16379 master - 0
1602515365057 0 connected
779a24884dbe1ceb848a685c669ec5326e6c8944 10.0.0.48:6379@16379 master - 0
1602515365000 4 connected
07231a50043d010426c83f3b0788e6b92e62050f 10.0.0.58:6379@16379 master - 0
1602515365000 5 connected
4f146b1ac51549469036a272c60ea97f065ef832 10.0.0.28:6379@16379 master - 0
1602515366074 2 connected

#檢視當前狀態

[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:0
cluster_current_epoch:5
cluster_my_epoch:3          叢集數量,上課已經提前將主從搭建好了
cluster_stats_messages_ping_sent:584
cluster_stats_messages_pong_sent:145
cluster_stats_messages_meet_sent:8
cluster_stats_messages_sent:737
cluster_stats_messages_ping_received:145
cluster_stats_messages_pong_received:151
cluster_stats_messages_received:296

為各個master 節點指派槽位範圍
建立指令碼,便於建立節點位置

#建立新增槽位的指令碼
[root@Timewalk ~]#cat addslot.sh
#!/bin/bash

host=$1
port=$2
start=$3
end=$4
pass=123456

for slot in `seq ${start} ${end}`;do
  echo slot:$slot
 redis-cli -h ${host} -p $port -a ${pass} --no-auth-warning cluster addslots
${slot}
done

#為三個master分配槽位,共16364/3=5,461.333333333333,平均每個master分配5,461個槽位
[root@Timewalk ~]#bash addslot.sh 10.0.0.8 6379 0 5461
[root@Timewalk ~]#bash addslot.sh 10.0.0.18 6379 5462 10922
[root@Timewalk ~]#bash addslot.sh 10.0.0.28 6379 10923 16383

#當第一個master分配完槽位後,可以看到下面資訊
[root@Timewalk ~]#redis-cli -a 123456 --no-auth-warning cluster info
cluster_state:ok
cluster_slots_assigned:5462
cluster_slots_ok:5462
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:1
cluster_current_epoch:5
cluster_my_epoch:3
cluster_stats_messages_ping_sent:1234
cluster_stats_messages_pong_sent:782
cluster_stats_messages_meet_sent:8
cluster_stats_messages_sent:2024
cluster_stats_messages_ping_received:782
cluster_stats_messages_pong_received:801
cluster_stats_messages_received:1583

#當第一個master分配完槽位後,可以看到下面資訊
[root@Timewalk ~]#redis-cli -a 123456 --no-auth-warning cluster nodes
a177c5cbc2407ebb6230ea7e2a7de914bf8c2dab 10.0.0.8:6379@16379 myself,master - 0
1602516039000 3 connected 0-5461
97c5dcc3f33c2fc75c7fdded25d05d2930a312c0 10.0.0.18:6379@16379 master - 0
1602516044606 1 connected
cb20d58870fe05de8462787cf9947239f4bc5629 10.0.0.38:6379@16379 master - 0
1602516042000 0 connected
779a24884dbe1ceb848a685c669ec5326e6c8944 10.0.0.48:6379@16379 master - 0
1602516041575 4 connected
07231a50043d010426c83f3b0788e6b92e62050f 10.0.0.58:6379@16379 master - 0
1602516042585 5 connected
4f146b1ac51549469036a272c60ea97f065ef832 10.0.0.28:6379@16379 master - 0
1602516043595 2 connected

#分配槽位後可以建立key
[root@Timewalk ~]#redis-cli -a 123456 --no-auth-warning set name zhang
(error) MOVED 5798 10.0.0.18:6379
[root@Timewalk ~]#redis-cli -h 10.0.0.18 -a 123456 --no-auth-warning set name
zhang
OK
[root@Timewalk ~]#redis-cli -h 10.0.0.18 -a 123456 --no-auth-warning get name
"zhang"

#當所有的三個master分配完槽位後,可以看到下面資訊
[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster nodes
a177c5cbc2407ebb6230ea7e2a7de914bf8c2dab 10.0.0.8:6379@16379 myself,master - 0
1602516633000 3 connected 0-5461
97c5dcc3f33c2fc75c7fdded25d05d2930a312c0 10.0.0.18:6379@16379 master - 0
1602516635862 1 connected 5462-10922
cb20d58870fe05de8462787cf9947239f4bc5629 10.0.0.38:6379@16379 master - 0
1602516635000 0 connected
779a24884dbe1ceb848a685c669ec5326e6c8944 10.0.0.48:6379@16379 master - 0
1602516635000 4 connected
07231a50043d010426c83f3b0788e6b92e62050f 10.0.0.58:6379@16379 master - 0
1602516634852 5 connected
4f146b1ac51549469036a272c60ea97f065ef832 10.0.0.28:6379@16379 master - 0
1602516636872 2 connected 10923-16383

#當所有的三個master分配完槽位後,可以看到下面資訊
[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3   #三個成員
cluster_current_epoch:5
cluster_my_epoch:3
cluster_stats_messages_ping_sent:1832
cluster_stats_messages_pong_sent:1375
cluster_stats_messages_meet_sent:8
cluster_stats_messages_sent:3215
cluster_stats_messages_ping_received:1375
cluster_stats_messages_pong_received:1399
cluster_stats_messages_received:2774

指定各個節點的主從關係

#通過上面cluster nodes 檢視master的ID資訊,執行下面操作,將對應的slave 指定相應的master節
點,實現三對主從節點
[root@Timewalk ~]#redis-cli -h 10.0.0.38 -a 123456 --no-auth-warning cluster
replicate a177c5cbc2407ebb6230ea7e2a7de914bf8c2dab
OK
[root@Timewalk ~]#redis-cli -h 10.0.0.48 -a 123456 --no-auth-warning cluster
replicate 97c5dcc3f33c2fc75c7fdded25d05d2930a312c0
OK
[root@Timewalk ~]#redis-cli -h 10.0.0.58 -a 123456 --no-auth-warning cluster
replicate 4f146b1ac51549469036a272c60ea97f065ef832
OK

#在第一組主從節點建立成功後,可以看到下面資訊
[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster nodes
a177c5cbc2407ebb6230ea7e2a7de914bf8c2dab 10.0.0.8:6379@16379 myself,master - 0
1602517124000 3 connected 0-5461
97c5dcc3f33c2fc75c7fdded25d05d2930a312c0 10.0.0.18:6379@16379 master - 0
1602517123000 1 connected 5462-10922
cb20d58870fe05de8462787cf9947239f4bc5629 10.0.0.38:6379@16379 slave
a177c5cbc2407ebb6230ea7e2a7de914bf8c2dab 0 1602517125709 3 connected
779a24884dbe1ceb848a685c669ec5326e6c8944 10.0.0.48:6379@16379 master - 0
1602517124689 4 connected
07231a50043d010426c83f3b0788e6b92e62050f 10.0.0.58:6379@16379 master - 0
1602517123676 5 connected
4f146b1ac51549469036a272c60ea97f065ef832 10.0.0.28:6379@16379 master - 0
1602517123000 2 connected 10923-16383


#在第一組主從節點建立成功後,可以看到下面資訊
[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning info replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.0.0.38,port=6379,state=online,offset=322,lag=1
master_replid:7af8303230e2939cc22943e991f06c6409356c6e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:322
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:322

[root@Timewalk ~]#redis-cli -h 10.0.0.38 -a 123456 --no-auth-warning info replication
# Replication
role:slave
master_host:10.0.0.8
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:336
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:7af8303230e2939cc22943e991f06c6409356c6e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:336
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:336


#所有三組主從節點建立成功後,可以看到最終結果
[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster nodes
a177c5cbc2407ebb6230ea7e2a7de914bf8c2dab 10.0.0.8:6379@16379 myself,master - 0
1602517611000 3 connected 0-5461
97c5dcc3f33c2fc75c7fdded25d05d2930a312c0 10.0.0.18:6379@16379 master - 0
1602517614000 1 connected 5462-10922
cb20d58870fe05de8462787cf9947239f4bc5629 10.0.0.38:6379@16379 slave
a177c5cbc2407ebb6230ea7e2a7de914bf8c2dab 0 1602517615000 3 connected
779a24884dbe1ceb848a685c669ec5326e6c8944 10.0.0.48:6379@16379 slave
97c5dcc3f33c2fc75c7fdded25d05d2930a312c0 0 1602517616011 4 connected
07231a50043d010426c83f3b0788e6b92e62050f 10.0.0.58:6379@16379 slave
4f146b1ac51549469036a272c60ea97f065ef832 0 1602517613966 5 connected
4f146b1ac51549469036a272c60ea97f065ef832 10.0.0.28:6379@16379 master - 0
1602517617034 2 connected 10923-16383


[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:5
cluster_my_epoch:3
cluster_stats_messages_ping_sent:2813
cluster_stats_messages_pong_sent:2346
cluster_stats_messages_meet_sent:8
cluster_stats_messages_sent:5167
cluster_stats_messages_ping_received:2346
cluster_stats_messages_pong_received:2380
cluster_stats_messages_received:4726


[root@Timewalk ~]#redis-cli -h 10.0.0.8 -a 123456 --no-auth-warning info replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.0.0.38,port=6379,state=online,offset=1022,lag=1
master_replid:7af8303230e2939cc22943e991f06c6409356c6e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1022
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1022

檢視主從節關係及槽位資訊

[root@Timewalk ~]#redis-cli -h 10.0.0.28 -a 123456 --no-auth-warning cluster slots
1) 1) (integer) 10923
 2) (integer) 16383
 3) 1) "10.0.0.28"
   2) (integer) 6379
   3) "4f146b1ac51549469036a272c60ea97f065ef832"
 4) 1) "10.0.0.58"
   2) (integer) 6379
   3) "07231a50043d010426c83f3b0788e6b92e62050f"
2) 1) (integer) 0
 2) (integer) 5461
 3) 1) "10.0.0.8"
   2) (integer) 6379
   3) "a177c5cbc2407ebb6230ea7e2a7de914bf8c2dab"
 4) 1) "10.0.0.38"
   2) (integer) 6379
   3) "cb20d58870fe05de8462787cf9947239f4bc5629"
3) 1) (integer) 5462
 2) (integer) 10922
 3) 1) "10.0.0.18"
   2) (integer) 6379
   3) "97c5dcc3f33c2fc75c7fdded25d05d2930a312c0"
 4) 1) "10.0.0.48"
   2) (integer) 6379
   3) "779a24884dbe1ceb848a685c669ec5326e6c8944"

驗證 redis cluster 訪問

#-c 表示以叢集方式連線
[root@Timewalk ~]#redis-cli -c -h 10.0.0.8 -a 123456 --no-auth-warning set
name zhang
OK
[root@Timewalk ~]#redis-cli -c -h 10.0.0.8 -a 123456 --no-auth-warning get
name
"zhang"

[root@Timewalk ~]#redis-cli  -h 10.0.0.8 -a 123456 --no-auth-warning get name
(error) MOVED 5798 10.0.0.18:6379
[root@Timewalk ~]#redis-cli  -h 10.0.0.18 -a 123456 --no-auth-warning get name
"zhang"
[root@Timewalk ~]#redis-cli  -h 10.0.0.28 -a 123456 --no-auth-warning get name
(error) MOVED 5798 10.0.0.18:6379