Redis
是一個高性能的key-value
數據庫,現時愈來愈多企業與應用使用Redis
做爲緩存服務器。樓主是一枚JAVA
後端程序員,也算是半個運維工程師了。在Linux
服務器上搭建Redis
,怎麼能夠不會呢?下面樓主就帶着你們從0開始,依次搭建:Redis
單機服務器 -> Redis
主從複製 -> Redis-Sentinel高可用
。逐步搭建出高可用的Redis緩存服務器。主要參考文章:簡書:搭建一個redis高可用系統html
樓主基於此文一步步參考着搭建,因此內容較爲類似,感謝原文做者,特此申明。前端
本文同步發佈於簡書 :http://www.jianshu.com/p/d7bc873b8797c++
首先從Redis
官網下載Redis
並解壓,樓主使用的版本是4.0.2。依次執行以下命令:git
cd /usr/local/
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
tar -zxvf redis-4.0.2.tar.gz
複製代碼
若是沒有安裝gcc
依賴包,則安裝對應依賴包程序員
yum install -y gcc-c++ tcl
複製代碼
下載並解壓完畢後,則對源碼包進行編譯安裝,樓主的Redis
安裝路徑爲/usr/local/redis
,同窗們能夠自行修改語句:make install PREFIX=你想要安裝的路徑
github
cd /usr/local/redis-4.0.2/
make install PREFIX=/usr/local/redis
複製代碼
複製Redis
相關命令到/usr/sbin
目錄下,這樣就能夠直接執行這些命令,不用寫全路徑redis
cd /usr/local/redis/bin/
sudo cp redis-cli redis-server redis-sentinel /usr/sbin/
複製代碼
安裝完成以後將 Redis
配置文件拷貝到系統配置目錄/etc/
下,redis.conf
是 Redis
的配置文件,redis.conf
在 Redis
源碼目錄,port
默認 6379。數據庫
cp /usr/local/redis-4.0.2/redis.conf /etc/
複製代碼
Redis
配置文件主要參數解析參考segmentfault
daemonize no #redis進程是否以守護進程的方式運行,yes爲是,no爲否(不以守護進程的方式運行會佔用一個終端)
pidfile /var/run/redis.pid #指定redis進程的PID文件存放位置
port 6379 #redis進程的端口號
bind 127.0.0.1 #綁定的主機地址
timeout 300 #客戶端閒置多長時間後關閉鏈接,默認此參數爲0即關閉此功能
loglevel verbose #redis日誌級別,可用的級別有debug.verbose.notice.warning
logfile stdout #log文件輸出位置,若是進程以守護進程的方式運行,此處又將輸出文件設置爲stdout的話,就會將日誌信息輸出到/dev/null裏面去了
databases 16 #設置數據庫的數量,默認爲0可使用select <dbid>命令在鏈接上指定數據庫id
save <seconds> <changes> #指定在多少時間內刷新次數達到多少的時候會將數據同步到數據文件;
rdbcompression yes #指定存儲至本地數據庫時是否壓縮文件,默認爲yes即啓用存儲;
dbfilename dump.db #指定本地數據庫文件名
dir ./ #指定本地數據問就按存放位置;
slaveof <masterip> <masterport> #指定當本機爲slave服務時,設置master服務的IP地址及端口,在redis啓動的時候他會自動跟master進行數據同步
masterauth <master-password> #當master設置了密碼保護時,slave服務鏈接master的密碼;
requirepass footbared #設置redis鏈接密碼,若是配置了鏈接密碼,客戶端在鏈接redis是須要經過AUTH<password>命令提供密碼,默認關閉
maxclients 128 #設置同一時間最大客戶鏈接數,默認無限制;redis能夠同時鏈接的客戶端數爲redis程序能夠打開的最大文件描述符,若是設置 maxclients 0,表示不做限制。當客戶端鏈接數到達限制時,Redis會關閉新的鏈接並向客戶端返回max number of clients reached錯誤信息
maxmemory<bytes> #指定Redis最大內存限制,Redis在啓動時會把數據加載到內存中,達到最大內存後,Redis會先嚐試清除已到期或即將到期的Key,當此方法處理 後,仍然到達最大內存設置,將沒法再進行寫入操做,但仍然能夠進行讀取操做。Redis新的vm機制,會把Key存放內存,Value會存放在swap區
appendonly no #指定是否在每次更新操做後進行日誌記錄,Redis在默認狀況下是異步的把數據寫入磁盤,若是不開啓,可能會在斷電時致使一段時間內的數據丟失。由於 redis自己同步數據文件是按上面save條件來同步的,因此有的數據會在一段時間內只存在於內存中。默認爲no
appendfilename appendonly.aof #指定跟新日誌文件名默認爲appendonly.aof
appendfsync everysec #指定更新日誌的條件,有三個可選參數no:表示等操做系統進行數據緩存同步到磁盤(快),always:表示每次更新操做後手動調用fsync()將數據寫到磁盤(慢,安全), everysec:表示每秒同步一次(折衷,默認值);
複製代碼
因爲Redis
默認是前端啓動,必須保持在當前的窗口中,若是使用ctrl + c
退出,那麼Redis
也就退出,不建議使用。後端
vi /etc/redis.conf
複製代碼
修改Redis
配置文件把舊值daemonize no
改成 新值daemonize yes
Redis
默認只容許本機訪問,但是有時候咱們也須要 Redis 被遠程訪問。
vi /etc/redis.conf
複製代碼
找到 bind 那行配置,默認是: # bind 127.0.0.1
去掉#
註釋並改成: bind 0.0.0.0
此設置會變成容許全部遠程訪問。若是想指定限制訪問,可設置對應的IP。
找到logfile
那行配置,默認是:logfile ""
,改成logfile /var/log/redis_6379.log
vi /etc/redis.conf
複製代碼
找到默認是被註釋的這一行:# requirepass foobared
去掉註釋,把 foobared
改成你想要設置的密碼,好比我打算設置爲:123456
,因此我改成:requirepass "123456"
修改以後重啓下服務
有了密碼以後,進入客戶端,就得這樣訪問:redis-cli -h 127.0.0.1 -p 6379 -a 123456
/usr/local/redis/bin/redis-server /etc/redis.conf
複製代碼
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown
複製代碼
ps -ef | grep redis
複製代碼
redis-cli
複製代碼
redis-cli shutdown
複製代碼
echo "/usr/local/redis/bin/redis-server /etc/redis.conf" >> /etc/rc.local
複製代碼
添加規則:iptables -I INPUT -p tcp -m tcp --dport 6379 -j ACCEPT
保存規則:service iptables save
重啓 iptables:service iptables restart
複製代碼
在/etc/init.d目錄下添加Redis服務的啓動,暫停和重啓腳本:
vi /etc/init.d/redis
複製代碼
腳本內容以下:
#!/bin/sh
#
# redis - this script starts and stops the redis-server daemon
#
# chkconfig: - 85 15
# description: Redis is a persistent key-value database
# processname: redis-server
# config: /usr/local/redis/bin/redis-server
# config: /etc/redis.conf
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
redis="/usr/local/redis/bin/redis-server"
prog=$(basename $redis)
REDIS_CONF_FILE="/etc/redis.conf"
[ -f /etc/sysconfig/redis ] && . /etc/sysconfig/redis
lockfile=/var/lock/subsys/redis
start() {
[ -x $redis ] || exit 5
[ -f $REDIS_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $redis $REDIS_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $prog: "
killproc $redis -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart| reload|orce-reload}"
exit 2
esac
複製代碼
賦予腳本權限
chmod 755 /etc/init.d/redis
複製代碼
啓動、中止和重啓:
service redis start
service redis stop
service redis restart
複製代碼
至此,Redis
單機服務器已搭建完畢,下面咱們看看主從架構如何搭建。
172.16.2.185:6379 主
172.16.2.181:6379 從
複製代碼
編輯從機的 Redis
配置文件,找到 210 行(大概),默認這一行應該是註釋的: # slaveof <masterip> <masterport>
咱們須要去掉該註釋,而且填寫咱們本身的主機的 IP 和 端口,好比:slaveof 172.16.2.185 6379
,若是主機設置了密碼,還須要找到masterauth <master-password>
這一行,去掉註釋,改成masterauth 主機密碼
。
配置完成後重啓從機Redis
服務
重啓完以後,進入主機的 redis-cli
狀態下redis-cli -h 127.0.0.1 -p 6379 -a 123456
,輸入:INFO replication
能夠查詢到當前主機的 Redis
處於什麼角色,有哪些從機已經連上主機。
主機信息172.16.2.185
# Replication
role:master
connected_slaves:1
slave0:ip=172.16.2.181,port=6379,state=online,offset=28,lag=1
master_replid:625ae9f362643da5337835beaeabfdca426198c7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28
複製代碼
從機信息172.16.2.181
# Replication
role:slave
master_host:172.16.2.185
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:210
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:625ae9f362643da5337835beaeabfdca426198c7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:210
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:210
複製代碼
redis-cli
狀態,而後 set
某個值,好比:set myblog YouMeek.com
redis-cli
的狀態下,獲取剛剛設置的值看是否存在:get myblog
,此時,咱們能夠發現是能夠獲取到值的。須要注意的是:從庫不具有寫入數據能力,否則會報錯。 從庫只有只讀能力。
主從架構的優勢:除了減小主庫鏈接的壓力,還有能夠關掉主庫的持久化功能,把持久化的功能交給從庫進行處理。
第一個從庫配置的信息是連上主庫,後面的第二個從庫配置的鏈接信息是連上第一個從庫, 假如還有第三個從庫的話,咱們能夠把第三個從庫的配置信息連上第二個從庫上,以此類推。
Redis
作了備份,看上去很完美。但因爲Redis
目前只支持主從複製備份(不支持主主複製),當主Redis
掛了,從Redis
只能提供讀服務,沒法提供寫服務。因此,還得想辦法,當主Redis
掛了,讓從Redis
升級成爲主Redis
。Redis Sentinel
帶有這個功能,當一個主Redis
不能提供服務時,Redis Sentinel
能夠將一個從Redis
升級爲主Redis
,並對其餘從Redis
進行配置,讓它們使用新的主Redis
進行復製備份。注意:搭建Redis Sentinel
推薦至少3臺服務器,但因爲樓主偷懶,下面用例只用了2臺服務器。
Redis Sentinel
的主要功能以下:
監控:哨兵不斷的檢查master
和slave
是否正常的運行。
通知:當監控的某臺Redis
實例發生問題時,能夠經過API
通知系統管理員和其餘的應用程序。
自動故障轉移:若是一個master
不正常運行了,哨兵能夠啓動一個故障轉移進程,將一個slave
升級成爲master
,其餘的slave
被從新配置使用新的master
,而且應用程序使用Redis
服務端通知的新地址。
配置提供者:哨兵做爲Redis
客戶端發現的權威來源:客戶端鏈接到哨兵請求當前可靠的master
的地址。若是發生故障,哨兵將報告新地址。
默認狀況下,每一個Sentinel
節點會以每秒一次的頻率對Redis
節點和其它的Sentinel
節點發送PING
命令,並經過節點的回覆來判斷節點是否在線。
若是在down-after-millisecondes
毫秒內,沒有收到有效的回覆,則會斷定該節點爲主觀下線。
若是該節點爲master
,則該Sentinel
節點會經過sentinel is-master-down-by-addr
命令向其它sentinel
節點詢問對該節點的判斷,若是超過<quorum>
個數的節點斷定master
不可達,則該sentinel
節點會將master
判斷爲客觀下線。
這個時候,各個Sentinel
會進行協商,選舉出一個領頭Sentinel
,由該領頭Sentinel
對master
節點進行故障轉移操做。
故障轉移包含以下三個操做:
在全部的slave
服務器中,挑選出一個slave
,並將其轉換爲master
。
讓其它slave
服務器,改成複製新的master
。
將舊master
設置爲新master
的slave
,這樣,當舊的master
從新上線時,它會成爲新master
的slave
。
這裏使用兩臺服務器,每臺服務器上開啓一個redis-server
和redis-sentinel
服務。
redis-server說明
172.16.2.185:6379 主
172.16.2.181:6379 從
複製代碼
redis-sentinel說明
172.16.2.185:26379
172.16.2.181:26379
複製代碼
若是要作自動故障轉移,則建議全部的redis.conf
都設置masterauth
,由於自動故障只會重寫主從關係,即slaveof
,不會自動寫入masterauth
。若是Redis
本來沒有設置密碼,則能夠忽略。
Redis
程序上面已經安裝過了,咱們只需增長redis-sentinel
的相關配置便可,將 redis-sentinel
的配置文件拷貝到系統配置目錄/etc/
下,sentinel.conf
是 redis-sentinel
的配置文件,sentinel.conf
在 Redis
源碼目錄。
cp /usr/local/redis-4.0.2/sentinel.conf /etc/
複製代碼
修改sentinel.conf
配置文件內容以下:
vi /etc/sentinel.conf
複製代碼
protected-mode no
sentinel monitor mymaster 172.16.2.185 6379 2
# redis在搭建時設置了密碼,因此要進行密碼配置
sentinel auth-pass mymaster 「123456「
#5秒內mymaster沒有響應,就認爲SDOWN
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 15000
複製代碼
在配置最後加上
logfile /var/log/sentinel.log
pidfile /var/run/sentinel.pid
daemonize yes
複製代碼
配置文件說明:
1.port :當前Sentinel服務運行的端口
2.dir : Sentinel服務運行時使用的臨時文件夾
3.sentinel monitor master001 192.168.110.10163792:Sentinel去監視一個名爲master001的主redis實例,這個主實例的IP地址爲本機地址192.168.110.101,端口號爲6379,而將這個主實例判斷爲失效至少須要2個 Sentinel進程的贊成,只要贊成Sentinel的數量不達標,自動failover就不會執行
4.sentinel down-after-milliseconds master001 30000:指定了Sentinel認爲Redis實例已經失效所需的毫秒數。當實例超過該時間沒有返回PING,或者直接返回錯誤,那麼Sentinel將這個實例標記爲主觀下線。只有一個 Sentinel進程將實例標記爲主觀下線並不必定會引發實例的自動故障遷移:只有在足夠數量的Sentinel都將一個實例標記爲主觀下線以後,實例纔會被標記爲客觀下線,這時自動故障遷移纔會執行
5.sentinel parallel-syncs master001 1:指定了在執行故障轉移時,最多能夠有多少個從Redis實例在同步新的主實例,在從Redis實例較多的狀況下這個數字越小,同步的時間越長,完成故障轉移所需的時間就越長
6.sentinel failover-timeout master001 180000:若是在該時間(ms)內未能完成failover操做,則認爲該failover失敗
7.sentinel notification-script :指定sentinel檢測到該監控的redis實例指向的實例異常時,調用的報警腳本。該配置項可選,可是很經常使用
添加規則:iptables -I INPUT -p tcp -m tcp --dport 26379 -j ACCEPT
保存規則:service iptables save
重啓 iptables:service iptables restart
複製代碼
redis-sentinel /etc/sentinel.conf
複製代碼
在任意一臺機子都可查看到相關服務信息
redis-cli -h 127.0.0.1 -p 26379
INFO sentinel
複製代碼
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.16.2.185:6379,slaves=1,sentinels=2
複製代碼
redis-cli -h 172.16.2.185 -p 6379 -a 123456 shutdown
複製代碼
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.16.2.181:6379,slaves=1,sentinels=2
複製代碼
發現從庫提高爲主庫。
若是停掉master
後,Sentinel
顯示足夠數量的sdown
後,沒有出現odown
或try-failover
,則檢查密碼等配置是否正確
若是停掉master
後,試圖切換的時候,發現日誌出現 failover-abort-not-elected
,則分2種狀況分別解決:
Redis
實例沒有配置protected-mode yes
bind 172.16.2.185
複製代碼
則在Sentinel
配置文件加上protected-mode no
便可
Redis
實例有配置protected-mode yes
bind 172.16.2.185
複製代碼
則在Sentinel
配置文件加上
protected-mode yes
bind 172.16.2.185
複製代碼
至此,redis的高可用方案已經搭建完成。
客戶端程序(如JAVA程序)鏈接Redis
時須要ip
和port
,但redis-server
進行故障轉移時,主Redis
是變化的,因此ip
地址也是變化的。客戶端程序如何感知當前主Redis
的ip
地址和端口呢?redis-sentinel
提供了接口,請求任何一個Sentinel
,發送SENTINEL get-master-addr-by-name <master name>
就能獲得當前主Redis
的ip
和port
。
客戶端每次鏈接Redis
前,先向sentinel
發送請求,得到主Redis
的ip
和port
,而後用返回的ip
和port
鏈接Redis
。
這種方法的缺點是顯而易見的,每次操做Redis
至少須要發送兩次鏈接請求,第一次請求Sentinel
,第二次請求Redis
。
更好的辦法是使用VIP
,固然這對配置的環境有必定的要求,好比Redis
搭建在阿里雲服務器上,可能不支持VIP
。
VIP
方案是,Redis
系統對外始終是同一ip地址,當Redis
進行故障轉移時,須要作的是將VIP
從以前的Redis
服務器漂移到如今新的主Redis
服務器上。
好比:當前Redis
系統中主Redis
的ip
地址是172.16.2.185
,那麼VIP(172.16.2.250)
指向172.16.2.185
,客戶端程序用VIP(172.16.2.250)
地址鏈接Redis
,實際上鍊接的就是當前主Redis
,這樣就避免了向Sentinel
發送請求。
當主Redis
宕機,進行故障轉移時,172.16.2.181
這臺服務器上的Redis
提高爲主,這時VIP(172.16.2.250)
指向172.16.2.181
,這樣客戶端程序不須要修改任何代碼,鏈接的是172.16.2.181
這臺主Redis
。
那麼如今的問題是,如何在進行Redis
故障轉移時,將VIP
漂移到新的主Redis
服務器上。
這裏可使用Redis Sentinel
的一個參數client-reconfig-script
,這個參數配置執行腳本,Sentinel
在作failover
的時候會執行這個腳本,而且傳遞6個參數<master-name>、 <role>、 <state>、 <from-ip>、 <from-port>、 <to-ip> 、<to-port>
,其中<to-ip>
是新主Redis
的IP
地址,能夠在這個腳本里作VIP
漂移操做。
sentinel client-reconfig-script mymaster /opt/notify_mymaster.sh
複製代碼
修改兩個服務器的redis-sentinel
配置文件/etc/sentinel.conf
,增長上面一行。而後在/opt/
目錄下建立notify_mymaster.sh
腳本文件,這個腳本作VIP
漂移操做,內容以下:
vi /opt/notify_mymaster.sh
複製代碼
#!/bin/bash
echo "File Name: $0"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
MASTER_IP=${6} #第六個參數是新主redis的ip地址
LOCAL_IP='172.16.2.185' #當前服務器IP,主機172.16.2.185,從機172.16.2.181
VIP='172.16.2.250'
NETMASK='24'
INTERFACE='eth1'
if [ ${MASTER_IP} = ${LOCAL_IP} ]; then
sudo /sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE} #將VIP綁定到該服務器上
sudo /sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
exit 0
else
sudo /sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE} #將VIP從該服務器上刪除
exit 0
fi
exit 1 #若是返回1,sentinel會一直執行這個腳本
複製代碼
賦予腳本權限
chmod 755 /opt/notify_mymaster.sh
複製代碼
如今當前主Redis
是172.16.2.185
,須要手動綁定VIP
到該服務器上。
/sbin/ip addr add 172.16.2.250/24 dev eth1
/sbin/arping -q -c 3 -A 172.16.2.250 -I eth1
複製代碼
因爲VIP只能綁定只有一臺機子,因此建議將改成bind 0.0.0.0
添加至redis.conf
中
vi /etc/redis.conf
複製代碼
設置bind 0.0.0.0
因爲VIP只能綁定只有一臺機子,因此建議將改成bind 0.0.0.0
添加至sentinel.conf
中
vi /etc/sentinel.conf
複製代碼
設置bind 0.0.0.0
重啓Redis
service redis restart`
複製代碼
重啓Sentinel
redis-sentinel /etc/sentinel.conf
複製代碼
隨後咱們在另外一臺機器172.16.2.181
上,經過VIP
訪問主機
redis-cli -h 172.16.2.250 -p 6379 -a 123456 INFO replication
複製代碼
可正常通信,信息以下:
# Replication
role:master
connected_slaves:1
slave0:ip=172.16.2.181,port=6379,state=online,offset=0,lag=0
master_replid:325b0bccab611d329d9c2cd2c35a1fe3c01ae196
master_replid2:c1f7a7d17d2c35575a34b00eb10c8abf32df2243
master_repl_offset:22246293
second_repl_offset:22241024
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:22237293
repl_backlog_histlen:9001
複製代碼
訪問主機的Sentinel
redis-cli -h 172.16.2.250 -p 26379 INFO sentinel
複製代碼
可正常通信,信息以下:
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.16.2.185:6379,slaves=1,sentinels=3
複製代碼
下面關閉主機的Redis
服務,看看VIP是否漂移到另外一臺服務器上。
redis-cli -h 172.16.2.185 -p 6379 -a 123456 shutdown
複製代碼
查看是否已進行切換
redis-cli -h 172.16.2.250 -p 26379 INFO sentinel
複製代碼
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.16.2.181:6379,slaves=1,sentinels=3
複製代碼
經過查詢Sentinel
發現從機172.16.2.181
提高爲主。
經過訪問VIP
的方式鏈接Redis
redis-cli -h 172.16.2.250 -p 6379 -a 123456 INFO replication
複製代碼
# Replication
role:master
connected_slaves:0
master_replid:cab30a4083f35652053ffcd099d70b9aaf7a80f3
master_replid2:3da856dd33cce4bedd54926df6797b410f1ab9e8
master_repl_offset:74657
second_repl_offset:36065
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:74657
複製代碼
從上面信息可知,VIP
已經飄移成功。可喜可賀,大吉大利,晚上吃雞。
至此,高可用Redis
緩存服務已搭建完畢,遲點會再出一篇文章教你們如何經過JAVA
鏈接Redis
進行相關操做。至於Redis Cluster
集羣方案,等有空再搭建而後再和你們一同分享。