1. 程式人生 > >Redis 主從複製技術原理

Redis 主從複製技術原理

基於前面介紹的 Redis 內容,Redis 只能作為一個單機記憶體資料庫,一旦伺服器宕機即不能提供服務,即便能通過持久化策略重啟恢復資料,往往也做不到百分之百還原。再一個就是,單機的 Redis 需要處理所有的客戶端請求,包括讀和寫操作,壓力很大。 說了這麼多,Redis 當然也提供瞭解決方案,主從複製技術是實現 Redis 叢集的最基本架構,叢集中有一臺或多臺主節點伺服器(master),多臺從節點伺服器(slave),slave 持續不斷的同步 master 上的資料。一旦 master 宕機,我們可以切換 salve 成為新的 master 穩定提供服務,也不用擔心 master 宕機導致的資料丟失。 下面我們就一起來看看主從複製技術的設計與應用,先看理論再看原始碼實現。 ### 一、理論上的主從複製技術設計 主從複製技術有兩個版本,2.8 以前的版本,設計上有缺陷,在 slave 斷線後重連依然需要 master 重新發送 RDB 重新進行資料更新,效率非常低。2.8 版本以後做了重新設計,通過引入偏移量同步,相對而言非常的高效,我們這裡不去討論舊版本的設計了,直接看新版本的主從複製技術設計。 每一個 Redis 啟動後,都會認為自己是一個 master 節點,你可以通過以下命令通知它成為 slave 並向 master 同步資料: ``` slaveof [masterip] [masterport] ``` 另一種方式就是在 Redis 啟動配置檔案中直接指明讓它作為一個 slave 節點啟動,並在啟動後同步 master 節點資料。配置項和命令是一樣的。 如果 master 配置了密碼連線,那麼還需要在 slave 的配置檔案中指明 master 的連線密碼: ``` mas