1. 程式人生 > 資料庫 >Redis Cluster叢集

Redis Cluster叢集

 Redis叢集是Redis提供的分散式資料庫方案,叢集通過分片(sharding)來進行資料共享,並提供複製故障轉移功能。

節點通過握手將其它節點新增到自己所在的叢集。

叢集中的16384個槽可以分別指派給叢集中的各個節點,每個節點都會記錄哪些槽指派給了具體哪個節點。

節點在收到客戶端命令請求時,會先檢查這個命令請求處理的鍵所在的槽是否由自己負責,如果不是的話,節點將向客戶端返回一個moved錯誤,moved錯誤攜帶的資訊可以指引客戶端轉向正在負責相關槽的節點。

對Redis叢集重新分片工作是由redis-trib負責執行的,重新分片的關鍵時將屬於某個槽的所有鍵值對從一個節點轉移到另一個節點。

如果節點A正在遷移槽i至節點B,那麼當節點A沒能在自己的資料庫中找到命令指定的資料庫鍵時,節點A會向客戶端返回一個ASK錯誤,指引客戶端到節點B繼續查詢指定的資料庫鍵。

叢集裡的從節點用於複製主節點,不處理命令請求,並在主節點下線時,通過故障轉移操作後,升級為新的主節點處理命令請求。

客戶端與redis節點直連,不需要中間代理層.客戶端不需要連線叢集所有節點,連線叢集中任何一個可用節點即可。

節點的fail是通過叢集中超過半數的節點檢測失效時才生效。

不支援多資料空間。單機下的Redis可以支援16個數據庫,叢集模式下只能使用一個數據庫空間,即db0.

複製結構值支援一層,從節點只能複製主節點,不支援巢狀複製結構

Key批量操作支援有限。如mset、mget,目前只支援具有相同slot值的key執行批量操作

key事務操作支援有限。同理只支援多key在統一節點上的事務操作,當多個key分佈在不同的節點上時無法使用事務功能