redis學習,redis

來源:互聯網
上載者:User

redis學習,redis
Redis主從拷貝的特點Redis主從拷貝的過程

slave串連上master之後,slave發送一個SYNC命令到master,master接收到命令之後,無論是第一次同步建立的串連,還是串連斷開後的重新串連,master會開啟BGSAVE操作,啟動一個後台進程,儲存一份當前master記憶體快照,並且開始儲存從調用BGSAVE之後的所有寫命令,master產生完快照之後,發送記憶體快照rdb檔案給slave。slave接收到master發送過來的rdb檔案之後,將清空所有舊資料,載入接收到的rdb檔案到記憶體中,發送完rdb檔案給slave之後,開始發送剛剛儲存的寫動作記錄給slave,slave執行這些寫操作,至此,主從資料儲存一致。發送完寫日誌之後,master會增量發送之後的寫操作給slave,使主從一致。

ps: 當master和slave的串連斷開時,slave可以自動重建立立串連。如果master同時收到多個slave發來的同步串連命令,只會使用啟動一個進程來寫記憶體快照,然後發送給所有的slave

Master write, Slave read機制

redis的主從複製,通過程式實現資料的讀寫分離,讓master負責處理些請求,slave負責處理讀請求,通過擴充slave處理更多的並發請求,減輕master端的負載。

ps:在程式中判斷使用者的讀寫請求,將write請求發送給master,read請求發送給slave處理

redis主從拷貝配置

開啟主從複製,最簡單的方式,串連上從機redis,執行slaveof <主機host> <主機連接埠>,另外也可以在從機的設定檔中加入slaveof <主機host> <主機連接埠>,這樣從機啟動的時候,就會自動連接主機,並且同步資料。

slaveof 192.168.100.126 6379 # 配置主機資訊
masterauth # 如果主機設定了密碼,配置密碼
slave-serve-stale-data yes # 配置當從機正在和主機進行同步的時候是否響應,如果配置是,有可能用戶端會讀到舊資料,如果配置否,當請求讀資料的時候,將會報錯SYNC with master in progress
slave-read-only yes # 從機是否唯讀。這邊設定可寫,不會同步到主機,
repl-ping-slave-period 10 # 從機發送ping命令到主機的間隔時間。
repl-timeout 60 # 主機響應逾時時間,這個包括傳輸逾時,IO逾時,ping逾時,注意這邊時間必須大於上面的間隔時間,要不然會一直報逾時錯誤。
repl-disable-tcp-nodelay no # 是否禁用TCP NODELAY。官方對這個配置用法的建議是:
# By default we optimize for low latency, but in very high traffic conditions
# or when the master and slaves are many hops away, turning this to “yes” may
# be a good idea.
# 預設情況下,我們最佳化目的是為了低延遲,但是在高傳輸條件或者主從機分布在路由很多跳之外的,建議禁用掉tcp-nodelay。
slave-priority 100 # 如果master不能再正常工作,那麼會在多個slave中,選擇優先值最小的一個slave提升為master,優先值為0表示不能提升為master

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.