一、幾種部署方式的介紹
redis 有4種部署方式:單機,主從,哨兵,集群
1、單機
優點:部署方便,可用於本地開發,或對數據要求不高的,開發環境等
缺點:
- 不能保證數據的可靠性
- 性能瓶頸
2、主從
2.1 master-slave 的方式
一台master, 多台slave, master 負責讀寫和向slave同步數據,slave負責只讀和同步master的數據(所以它的同步機制怎樣實現的?主從是怎樣同步的)
主從關系:一主多從,但不能一從多主。

2.2 同步機制
要解決回答的問題包括:
-
- 主從怎樣實現同步呢:見2.2.1
- 怎樣確定主從:見2.2.1
- 同步包括全量同步,增量同步,同步的觸發機制(master 或 slave 知道什么時候要去進行同步?)
- 如果master掛了會怎么辦 見2.2.3
- master 掛掉后,怎樣恢復 見2.2.4
- 有多個slave要同步,會不會影響master的寫性能?: 會的,所以這也是主從的一個缺點之一
- 主從和集群可以一起部署嗎,多個master當成一個master:
- 向slave進行寫操作,會怎樣:不能寫
- 復制和同步會比較影響Master 的性能,可以怎樣做:設為為主-從-從模式。或樹狀模式。
2.2.1 如何進行第一次同步,怎樣建立主從關系
- 先按單機部署幾台,然后,在slave機子,執行,replicaof ip:port 進行確定主從關系,之后確定主從關系后,就開始進行全量同步和后面的長連接,增量同步。
- 比如現在有3台機子 ,192.168.1.100, 192.168.1.101, 192.168.1.102 其中想把 192.168.1.100 做 master, 另外兩台機子做 slave,那么
- 首先,把3台機子,都單獨部署,啟動,這個時候,他們相互沒有關系,
- 進入隨便一台機子(要進行主從,這三台機子必須是同個網段,相互可以聯通), bin/redis-cli -h 192.168.1.101 -p 6379 連接到 101 的redis
- 然后執行: REPLICAOF 192.168.1.100 6379 (這個時候,101 就變成了 100 的slave,創建連接的首次,會進行全量同步)
- 對於 102 的機子,同理,使用redis-cli 連接到102,然后使用指令:REPLICAOF 192.168.1.100 6379 也可以創建102 與 100 的 關聯。
2.2.2
2.2.3 master 掛掉后會怎樣
如果Master 宕機后,就需要人工介入,進行錯誤轉移,重新指定Master,把從變主。
2.2.4 master 掛掉后,怎樣恢復
master 掛掉之后,slave 是不能寫的,要重新指定master才行。
先脫離slave1之前與master 的關系:REPLICAOF NO ONE
這個時候,slave1 是可以重新寫數據了,然后再把slave2關聯到新的master(即slave1)
這個時候,就變成一主一從了。
3、哨兵
哨兵模式是在主從的基礎上做的一種加強模式,主從有一個致命的缺陷:當master宕掉之后,需要人為介入去處理。哨兵模式就是針對這個缺陷做的加強,當master宕掉之后,會自動從各個slave中選出新的master,從中不需要人為介入。保證了相對的健壯性。但原來主從的性能缺點是沒有得到優化的。
3.1 一些概念
哨兵:
- 是一種redis的“特殊”節點,不存儲數據。我現在是一個節點對就一個哨兵,有多少個節點,就放多少個哨兵。
- 哨兵,默認端口是26379, 所以它也是要起一個進程的,這個哨兵進程是用於監測,心跳檢測,選舉等用途。有點像,emmm,加個保護。
節點:master 和 slave 都可以叫節點。
3.2 哨兵配置
1、哨兵配置文件:sentinel.conf, 幾個重要的參數
- protected-mode no: 保護模式關閉一下
- port 26379: 這個是哨兵進程的端口,默認26379
- sentinel monitor mymaster 127.0.0.1 6379 2 表示哨兵監聽的master是本機端口6379的進程,並且要至少超過2個從節點認為master 掛了,才能開始新的選舉
- sentinel down-after-milliseconds mymaster 10000 超過10000ms, master節點沒反應,才認為master 是掛了
3.3 哨兵配置啟動
按主從方式啟動好 master 和幾個 slave后,
再執行:
3.4 哨兵總結
加強型的主從。添加了監控的主從模式。配置起來反而會比較麻煩。
