1. 程式人生 > 資料庫 >Redis Cluster的圖文講解

Redis Cluster的圖文講解

1.1 Redis-Cluster簡介

1.1.1 什麼是Redis-Cluster

為何要搭建Redis叢集。Redis是在記憶體中儲存資料的,而我們的電腦一般記憶體都不大,這也就意味著Redis不適合儲存大資料,適合儲存大資料的是Hadoop生態系統的Hbase或者是MogoDB。Redis更適合處理高併發,一臺裝置的儲存能力是很有限的,但是多臺裝置協同合作,就可以讓記憶體增大很多倍,這就需要用到叢集。

Redis叢集搭建的方式有多種,例如使用客戶端分片、Twemproxy、Codis等,但從redis 3.0之後版本支援redis-cluster叢集,它是Redis官方提出的解決方案,Redis-Cluster採用無中心結構,每個節點儲存資料和整個叢集狀態,每個節點都和其他所有節點連線。其redis-cluster架構圖如下:

客戶端與 redis 節點直連,不需要中間 proxy 層.客戶端不需要連線叢集所有節點連線叢集中任何一個可用節點即可。
所有的 redis 節點彼此互聯(PING-PONG 機制),內部使用二進位制協議優化傳輸速度和頻寬.

1.1.2分佈儲存機制-槽

(1)redis-cluster 把所有的物理節點對映到[0-16383]slot 上,cluster 負責維護node<->slot<->value

(2)Redis 叢集中內建了 16384 個雜湊槽,當需要在 Redis 叢集中放置一個 key-value 時,redis 先對 key 使用 crc16 演算法算出一個結果,然後把結果對 16384 求餘數,這樣每個key 都會對應一個編號在 0-16383 之間的雜湊槽,redis 會根據節點數量大致均等的將雜湊槽對映到不同的節點。

例如三個節點:槽分佈的值如下:

  • SERVER1: 0-5460
  • SERVER2: 5461-10922
  • SERVER3: 10923-16383

1.1.2分佈儲存機制-槽

(1)redis-cluster 把所有的物理節點對映到[0-16383]slot 上,cluster 負責維護node<->slot<->value

(2)Redis 叢集中內建了 16384 個雜湊槽,當需要在 Redis 叢集中放置一個 key-value 時,redis 先對 key 使用 crc16 演算法算出一個結果,然後把結果對 16384 求餘數,這樣每個key 都會對應一個編號在 0-16383 之間的雜湊槽,redis 會根據節點數量大致均等的將雜湊槽對映到不同的節點。

例如三個節點:槽分佈的值如下:

  • SERVER1: 0-5460
  • SERVER2: 5461-10922
  • SERVER3: 10923-16383

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。如果你想了解更多相關內容請檢視下面相關連結