redis學習主從複製Master/slave
是什麼
#行話:也就是我們所說的主從複製,主機資料更新後根據配置和策略, 自動同步到備機的master/slaver機制,Master以寫為主,Slave以讀為主
能幹嘛
#讀寫分離
災難復原
推薦(免費):redis
怎麼玩
•配從(庫)不配主(庫)
• 從庫配置命令:slaveof 主庫IP 主庫端口
• 每次與master斷開之後,都需要重新連接,除非你配置進redis.conf文件(具體位置:redis.conf搜尋
# REPLICATION
#)
• info replication
• 修改設定檔細節操作
• 拷貝多個redis.conf檔,按'redis[ port].conf'重命名
• 開啟daemonize yes
• pid檔名
• 指定連接埠
## ••名字名稱檔案名稱
# 她名字名字。 #replication 英[ˌreplɪ'keɪʃ(ə)n] 美[ˌreplɪ'keɪʃ(ə)n] n.
(繪畫等的)複製;拷貝;重複(實驗);(尤指對答辯的)回答
常用3招
一主二僕(一台主機,兩台從機)
Init
透過slaveof 127.0.0.1 6379d來設定僕機
此時設定了一主二僕
在主的裡面set k4 v4,在兩個slave裡面get k4都能顯示出來。
1.如果再slave之前,我設定了k1和k2.那麼從機能否查的出來其值?
2.此時在主機上面set k6 v6.而兩個從機上面也有set k6 v66.此時會出現哪種情況。先到先得,後者覆蓋,從機和主機執行同樣的命令是否可以通過? 主機寫為主,從機讀為主 此時從機不能寫,報了異常。
3.主機死了?從機會有哪些情況。從機上位?原地待命? 還是slave,原地待命。不會上位,領導回來了,一切照舊
4.從機死了?從機能不能恢復?
從機死了,恢復過來就變成了master,因為• 每次與master斷開之後,都需要重新連接,除非你配置進redis.conf。如果想跟上大部隊,就是用slaveof指令即可。從頭來一遍,把主機的從頭到尾擼一遍。
薪火相傳
核心思想:去中心化
上一個Slave可以是下一個slave的Master,Slave同樣可以接收其他slaves的連接和同步請求,那麼該slave作為了鏈條中下一個的master, 可以有效減輕master的寫壓力(奴隸的奴隸還是奴隸)
中途變更轉向:會清除之前的數據,重新建立拷貝最新的
slaveof 新主庫IP 新主庫埠
79是80的主機,80是81的主機。在79中set k9 v9在80和81之間都能查詢的到,在80主機上使用info republication,是slave,但是也連接了一個slaver。
反客為主
SLAVEOF no one讓目前資料庫停止與其他資料庫的同步,轉成主資料庫
主機掛了之後,兩個從機需要選擇出一個老大,這時候對80使用一個指令,slaveof no one,讓80稱為領導。而對於81來說,如果使用了slaveof 80,則認80位元主機,對80的資料做了修改,81也能夠查詢的到。若原主機79回來了之後,此時就變成了一個獨立的個體。複製原理
slave啟動成功連線到master後會發送一個sync指令master接到指令啟動後台的記憶體進程,同時收集所有接收到的用於修改資料集命令, 在後台進程執行完畢之後,master將傳送整個資料檔案到slave,以完成一次完全同步 全量複製:而slave服務在接收到資料庫檔案資料後,將其儲存並載入到記憶體中。 增量複製:Master繼續將新的所有收集到的修改命令依次傳給slave,完成同步
但是只要是重新連接master,一次完全同步(全量複製)將被自動執行### 首次是全量複製,其後是增量複製。 #########哨兵模式(sentinel)#########一組sentinel能同時監控多個master(巡邏放哨)#########是什麼### ######反客為主的自動版,能夠後台監控主機是否故障,如果故障了根據投票數自動將從庫轉換為主庫#########怎麼玩(使用步驟)### ### 1. 調整結構,6379帶著6380、6381
2. 新建sentinel.conf文件,名字絕不能錯
3. 配置哨兵,填寫內容
1.sentinel monitor 被監控資料庫名稱(自己取名字) 127.0.0.1 6379 1
2. 上面最後一個數字1,表示主機掛掉後salve投票看讓誰接替成為主機,得票數多少後成為主機(PS. 跟官網的描述有出入官網的描述有出入官,下面有官方文件說明)
4. 啟動哨兵
1. redis-sentinel /sentinel.conf(上述目錄依照各自的實際情況配置,可能目錄不同)
5. 正常主從演示
6. 原有的master掛了
7.投票新選
8. 重新主從繼續開工,info replication查查看
#問題:如果之前掛了的master重啟回來,會不會雙master衝突?
答: 不會,原master,變成slave
複製的缺點
#複製延時
由於所有的寫入操作都是先在Master上操作,然後同步更新到slave上,所以從Master同步到Slave機器有一定的延遲,當系統很繁忙的時候,延遲問題會更加嚴重,Slave機器數量的增加也會使這個問題更加嚴重。
更多相關免費學習推薦:redis教學
以上是redis學習主從複製Master/slave的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。

Redis 使用哈希表存儲數據,支持字符串、列表、哈希表、集合和有序集合等數據結構。 Redis 通過快照 (RDB) 和追加只寫 (AOF) 機制持久化數據。 Redis 使用主從復制來提高數據可用性。 Redis 使用單線程事件循環處理連接和命令,保證數據原子性和一致性。 Redis 為鍵設置過期時間,並使用 lazy 刪除機制刪除過期鍵。

要查看 Redis 中的所有鍵,共有三種方法:使用 KEYS 命令返回所有匹配指定模式的鍵;使用 SCAN 命令迭代鍵並返回一組鍵;使用 INFO 命令獲取鍵的總數。

理解 Redis 源碼的最佳方法是逐步進行:熟悉 Redis 基礎知識。選擇一個特定的模塊或功能作為起點。從模塊或功能的入口點開始,逐行查看代碼。通過函數調用鏈查看代碼。熟悉 Redis 使用的底層數據結構。識別 Redis 使用的算法。

Redis計數器是一種使用Redis鍵值對存儲來實現計數操作的機制,包含以下步驟:創建計數器鍵、增加計數、減少計數、重置計數和獲取計數。 Redis計數器的優勢包括速度快、高並發、持久性和簡單易用。它可用於用戶訪問計數、實時指標跟踪、遊戲分數和排名以及訂單處理計數等場景。

啟動 Redis 服務器的步驟包括:根據操作系統安裝 Redis。通過 redis-server(Linux/macOS)或 redis-server.exe(Windows)啟動 Redis 服務。使用 redis-cli ping(Linux/macOS)或 redis-cli.exe ping(Windows)命令檢查服務狀態。使用 Redis 客戶端,如 redis-cli、Python 或 Node.js,訪問服務器。

使用Redis進行鎖操作需要通過SETNX命令獲取鎖,然後使用EXPIRE命令設置過期時間。具體步驟為:(1) 使用SETNX命令嘗試設置一個鍵值對;(2) 使用EXPIRE命令為鎖設置過期時間;(3) 當不再需要鎖時,使用DEL命令刪除該鎖。
