在一個系統裏,我們常常使用 Redis 作爲我們的緩存系統,以提高接口訪問的效率。
然而,當流量大到一定程度,讀讀寫寫,Redis 也頂不住了,怎麼辦?
一般來說,有如下幾種方法可供解決:主從模式,Sentinel(哨兵)模式,Cluster模式。
這一節,介紹一下主從模式的實現。
1、概念
什麼是主從模式?
主從模式也可以理解爲讀寫分離,就是把原始的 Redis 庫複製一份到另一個服務器的 Redis ,原始的 Redis 只提供寫入功能,稱爲主(master),複製出來的 Redis 只提供讀功能,成爲(slave)。
可以是一主一從,也可以是一主多從。
通過這種讀寫分離的方式來實現降低 Redis 的訪問壓力,這就是主從模式的一個大致概念。
(以上是通過我個人理解自己撰寫的概念,可能有誤差,但應該差不多,標準釋義還請自行查閱,(狗頭)
2、環境搭建
既然是主從,那麼有主有從,至少得有兩個 Redis。
可以是在一臺服務器上開啓兩個 Redis 實例,也可以是在兩個服務器上來實現。
我這裏使用的是兩臺服務器,192.168.31.219 作爲 master,192.168.31.207 作爲 slave。
Redis 的下載就不多說了,直接可 apt-get 就可以 install。
3、redis.conf 設置
前面我們是通過 apt-get 來安裝的,所以 redis 的 conf 文件在 /etc/redis/redis.conf。
master設置
master 不需要進行額外設置,直接運行 redis 即可。
slave設置
slave 的設置也不難,在 /etc/redis/redis.conf 文件的末尾添加一行 所屬的 master 即可。
語法如下:
slaveof 192.168.31.219 6379 #爲master 的redis 的ip 和端口
其中,219 就是我們的 master 所在的服務器 IP,6379 就是 服務器上 redis 的端口。
運行:
sudo service redis restart
重啓 Redis 服務,如果沒意外的話,我們的主從集羣就搭建好了。
4、查看主從信息
在 219 上,也就是我們的 master 上,鍵入 redis-cli 進入 redis 的交互界面,鍵入 info replication,可以看到類似下圖,
就表示這個 role 是 master。
在 slave 服務器上同樣輸入 info replication ,可以看到類似如下:
這上面的 role 是 slave,有 master 的 ip 以及相應的端口。
master_link_status 的狀態是 up,表示的是主從之間的狀態時 連接的。
5、測試
在我們的 master 上,鍵入 redis-cli,進入 redis 的交互界面,輸入:
set test 123
然後,在 slave 機器上,輸入:
get test
就可以看到從 master 上同步過來的數據。
而當我們嘗試在 slave 上嘗試 del 操作,比如:
因爲 slave 默認是 只可讀的,不允許進行 更改或者刪除操作,
以上大概就是 Redis 主從模式的一個搭建過程。
下一篇,會介紹一下,哨兵模式的搭建流程,以及在本人機器上跑通的一個實例。