一、架構不同
redis主從:一主多從;
redis集群:多主多從;
二、存儲不同
redis主從:主節點和從節點都是存儲所有數據;
redis集群:數據的存儲是通過hash計算16384的槽位,算出要將數據存儲的節點,然后進行存儲;
三、選舉不同
redis主從:通過啟動redis自帶的哨兵(sentinel)集群進行選舉,也可以是一個哨兵
選舉流程:1、先發現主節點fail的哨兵,將成為哨兵中的leader,之后的主節點選舉將通過這個leader進行故障轉移操作,從存活的slave中選舉新的master,新 的master選舉同集群的master節點選舉類似;
redis集群:集群可以自己進行選舉
選舉流程:1、當主節點掛掉,從節點就會廣播該主節點fail;
2、延遲時間后進行選舉(延遲的時間算法為:延遲時間+隨機數+rank*1000,從節點數據越多,rank越小,因為主從數據復制是異步進行的,所以 所有的從節點的數據可能會不同),延遲的原因是等待主節點fail廣播到所有存活的主節點,否則主節點會拒絕參加選舉;
3、參加選舉的從節點向所有的存活的節點發送ack請求,但只有主節點會回復它,並且主節點只會回復第一個到達參加選舉的從節點,一半以上的主節點回復,該節點就會成為主節點,廣播告訴其他節點該節點成為主節點。
四、節點擴容不同
redis主從:只能擴容從節點,無法對主節點進行擴容;
redis集群:可以擴容整個主從節點,但是擴容后需要進行槽位的分片,否則無法進行數據寫入,命令為: