一般情況下,使用主從模式加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上貢獻代碼。
