Redis學習(五) Redis cluster模式詳解
阿新 • • 發佈:2019-01-06
一般情況下,使用主從模式加Sentinal監控就可以滿足基本需求了,但是當資料量過大一個主機放不下的時候,就需要對資料進行分割槽,將key按照一定的規則進行計算,並將key對應的value分配到指定的Redis例項上,這樣的模式簡稱Redis叢集。
Redis分割槽也稱作Redis分片,或者Redis叢集,這都是一個意思。
一、Redis叢集
1.1 Redis叢集的搭建
叢集方面的教程也是有很多的,找了幾個覺得還不錯的,有需要的可以去看看:
- 有個入門教程挺不錯的,可以看一看:http://doc.redisfans.com/topic/cluster-tutorial.html
- 還有個文章不錯,建議看一遍:http://blog.csdn.net/dc_726/article/details/48552531。
- 還有個文章:https://my.oschina.net/guol/blog/506193。
1.2 Redis叢集的不足
這個還是應該清楚的,看是否滿足你現在的需求。
- 一般涉及多個key的操作會不支援,取兩個set的並集,且兩個set在不同的Redis例項上面(當然也是能實現的,只是Redis不會直接支援這麼做)。
- 涉及多個key的事務將不能使用
- 使用分割槽時,資料處理更加複雜,例如你必須處理多個RDB / AOF檔案,你需要備份你的資料並聚合多個例項和主機的永續性檔案。
二、Redis叢集的Java客戶端訪問
Redis分割槽後,Java客戶端的訪問也響應的複雜起來,如果使用Jedis的話,那就是先構造一個JedisCluster,然後通過它進行叢集操作:
//使用需要的構造方法構造JedisCluster JedisCluster jedisCluster = new JedisCluster(); //JedisCluster 的使用,JedisCluster 具備Redis大多數方法 jedisCluster.set("key", "value"); //使用完後關閉 jedisCluster.close();
Jedis的JedisCluster目前還在開發中,還不成熟,遇到問題了多去Git上反饋,如果能解決,就去Git上貢獻程式碼。