1. 程式人生 > >Redis-redis cluster的概念

Redis-redis cluster的概念

一、redis cluster

在《Redis-主從架構實踐》這篇中,我們搭建了一主多從的架構來實現讀寫分離。在《Redis-搭建哨兵叢集》這篇中,我們搭建了哨兵叢集來實現Redis叢集高可用,當master掛掉之後,則從多個slave中選擇一個slave作為master對外提供讀寫服務。

但是至始至終,我們只有一個master對外提供服務。這種單redis在海量資料面前的瓶頸就在於一個master的記憶體是有限的,假設一個master所在節點的記憶體只有32G,那麼不管該master有多少個slave,它們最大容納的資料量也就只有32G。當超過32G的時候,則會根據快取清理演算法,將舊的很少使用的資料給清除出記憶體,然後保證記憶體中只有固定大小的記憶體。

那麼怎樣才能突破單機瓶頸,讓redis支援海量資料呢?這就是接下來要說的redis cluster,其支撐N個master節點,每個master節點都可以掛載多個slave。

基於redis cluster去搭建redis叢集,我們就不需要手動搭建主從架構+哨兵叢集即可實現讀寫分離+高可用,同時通過多master實現海量資料的儲存。

二、redis cluster vs replication + sentinel

如果我們的資料量很少,主要是承載高併發高效能的場景,比如快取一般就幾個G,那麼單機足夠了。一個mater多個slave,然後自己搭建一個sentinel叢集,去保證redis主從架構的高可用性,就可以了。(replication+sentinel)

而redis cluster主要是針對海量資料+高併發+高可用的場景,如果我們的資料量很大,那麼建議就用redis cluster。