Redis Cluster是Redis的分佈式解決方案,在3.0版本正式推出,有效地解決了Redis分佈式方面的需求。當遇到單機內存、併發、流量等瓶頸時,能夠採用Cluster架構方案到達負載均衡的目的。以前,Redis分佈式方案通常有兩種:數據庫
接下來咱們介紹下Redis Cluster的數據分佈。架構
分佈式數據庫首先要解決把整個數據集按照分區規則映射到多個節點的問題,即把數據集劃分到多個節點上,每一個節點負責總體數據的一個子集。併發
虛擬槽分區:巧妙的使用了哈希空間,使用分散度良好的哈希函數把全部數據映射到一個固定範圍的整數集合中,整數定義爲槽。這個範圍通常遠遠大於節點數,好比Redis Cluster槽範圍是0~16363.槽是集羣內數據管理和遷移的基本單位。採用大範圍槽的主要目的是爲了方便數據拆分和集羣擴展。每一個節點會負責必定數量的槽。以下圖所示:負載均衡
Redis Cluster採用虛擬槽分區:全部的鍵根據哈希函數映射到0~16383整數槽內,計算公式slot=CRC16 & 16383.每個節點負責維護一部分槽以及槽所映射的鍵值數據,以下圖:分佈式
Redis虛擬槽分區的特色:函數