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