Redis ~ 数据库的几种常见用法(主从复制、高可用、集群)
Table of Contents
1. Redis簡介
2. Redis配置
3. Redis主從復制
3.1 配置node2為node1的slave
3.2 測試
4. Redis高可用(哨兵)
4.1 Redis簡介
4.2 Redis配置
4.3 測試
5. Redis集群
5.1 集群的配置?
5.2?測試
1. Redis簡介
Redis是一個開源的內(nèi)存中數(shù)據(jù)結構存儲,它可以用作數(shù)據(jù)庫、緩存和消息代理。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現(xiàn)了master-slave(主從)復制。
Redis支持主從復制。數(shù)據(jù)可以從主服務器向任意數(shù)量的從服務器上同步,從服務器可以是關聯(lián)其他從服務器的主服務器。這使得Redis可執(zhí)行單層樹復制。存盤可以有意無意的對數(shù)據(jù)進行寫操作。由于完全實現(xiàn)了發(fā)布/訂閱機制,使得從數(shù)據(jù)庫在任何地方同步樹時,可訂閱一個頻道并接收主服務器完整的消息發(fā)布記錄。同步對讀取操作的可擴展性和數(shù)據(jù)冗余很有幫助。
2. Redis配置
下載地址:http://www.redis.cn/download.html
- 解壓安裝包
- make?
- make install
- 安裝redis服務,使用默認6379端口以及默認文件名稱
- 查看端口
默認綁定的本地的6379端口,這樣就違背了我們想使用它的初衷了。
- 修改配置文件,更改綁定接口
打開所有接口的6379端口
- 重啟redis服務,并查看端口信息
可以看到,我們剛才修改的接口信息已經(jīng)生效。接下來我們將node2也配置一下,如上步驟,不贅余。
3. Redis主從復制
3.1 配置node2為node1的slave
- 更改node2的配置文件
- 重啟服務,查看redis端口信息?
3.2 測試
- 在node1用redis-cli工具寫入數(shù)據(jù)
- 在node2用redis-cli讀取數(shù)據(jù)
通過測試可以看到,我們在node1中寫入的數(shù)據(jù),node2已經(jīng)復制。但是要注意的是node2為slave節(jié)點,即只讀節(jié)點,無法寫入。
4. Redis高可用(哨兵)
在做該實驗之前,我們先做好準備工作。之前我們創(chuàng)建了兩個節(jié)點,一個master節(jié)點,一個slave節(jié)點。但是在搭建高可用時,我們會用到三個節(jié)點,因此我們再創(chuàng)建一個slave節(jié)點。步驟如上node2,不贅余。
4.1 Redis簡介
Redis 的 Sentinel 系統(tǒng)用于管理多個 Redis 服務器(instance)該系統(tǒng)執(zhí)行以下三個任務:
監(jiān)控(Monitoring):Sentinel 會不斷地檢查你的主服務器和從服務器是否運作正常。
通知(Notification):當被監(jiān)控的某個 Redis 服務器出現(xiàn)問題時, Sentinel 可以通過 API 向管理員或者其他應用程序發(fā)送通知。
自動故障遷移(Automatic failover):當一個主服務器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主服務器的其中一個從服務器升級為新的主服務器, 并讓失效主服務器的其他從服務器改為復制新的主服務器; 當客戶端試圖連接失效的主服務器時, 集群也會向客戶端返回新主服務器的地址, 使得集群可以使用新主服務器代替失效服務器。
4.2 Redis配置
- 修改哨兵配置文件
指示 Sentinel 去監(jiān)視一個名為 mymaster 的主服務器, 這個主服務器的 IP 地址為 192.168.1.11?, 端口號為 6379 , 而將這個主服務器判斷為失效至少需要 2 個 Sentinel 同意 (只要同意 Sentinel 的數(shù)量不達標,自動故障遷移就不會執(zhí)行)。
down-after-milliseconds 選項指定了 Sentinel 認為服務器已經(jīng)斷線所需的毫秒數(shù)。
接下來就是把三個節(jié)點都配置上,可以一個節(jié)點接一個節(jié)點的配置,也可以直接復制。但是要注意:必須在開啟哨兵前復制,因為當開啟哨兵后,配置文件中會生成一個session-id,而每個哨兵的id都必須唯一,所以必須在未開啟哨兵時復制。
- 開啟哨兵
4.3 測試
- 查看node1的redis狀態(tài)
- 關閉node1的redis
- 查看三個節(jié)點的哨兵信息
通過哨兵信息,我們可以看到,master節(jié)點已經(jīng)由node1轉(zhuǎn)換為node2。
- 查看node2的redis狀態(tài)
恢復node1的redis,node3查看哨兵狀態(tài)可以看到,node1恢復,成為node2的從節(jié)點
5. Redis集群
5.1 集群的配置?
搭建集群的我們需要一些運行在集群模式的Redis實例. 這意味這集群并不是由一些普通的Redis實例組成的,集群模式需要通過配置啟用,開啟集群模式后的Redis實例便可以使用集群特有的命令和特性了。
mkdir /usr/local/cluster-test cd /usr/local/cluster-test/ mkdir 7000 7001 7002 7003 7004 7005- 文件夾7000至7005中,創(chuàng)建redis.conf文件?
配置中的端口號(日志,pid文件目錄)從 7000 改為與文件夾名字相同的號碼
- 所有集群節(jié)點配置完成后開啟
- 創(chuàng)建集群
其中--cluster-replicas 1表示,一個master配一個slave
5.2?測試
在7000寫入test時,重定向到了7001,在7002讀取test時,也重定向到7001。也就是說我們實際存儲的位置就是在7001上。
- down掉7001
- down掉7005
- 開啟關閉的7001
發(fā)現(xiàn)開啟7001后還是獲取不到數(shù)據(jù)
- 開啟關閉的7005
數(shù)據(jù)獲取成功~沒錯,我們的master已經(jīng)重定向到7005,因此7005開啟數(shù)據(jù)復制恢復正常~~
?
總結
以上是生活随笔為你收集整理的Redis ~ 数据库的几种常见用法(主从复制、高可用、集群)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue-shop电商管理后台
- 下一篇: 计算机毕业设计android的个人理财记