1. 程式人生 > >部署高可用的Redis叢集架構

部署高可用的Redis叢集架構

如果正在連線的master不可用時,客戶端會先丟擲redis.exceptions.ConnectionError異常(此時還未開始failover),然後丟擲redis.sentinel.MasterNotFoundError異常(failover進行中),在sentinel正常failover之後,例項正常。

如何在JAVA 下使用Redis Sentinel?
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis連線池的話,還需commons-pool-2.4.2.jar。JedisTemplate提供了一個template方法,負責對Jedis連線的獲取與歸還。

注意:
1)cluster環境下redis的slave不接受任何讀寫操作,比如sentinel模式下只有slave升級為主例項時才能進行讀寫操作。
2)client端不支援keys批量操作,不支援select dbNum操作,只有一個db:select 0,這個十分尷尬。 
3)JedisCluster 的info()等單機函式無法呼叫,返回(No way to dispatch this command to Redis Cluster)錯誤。.
4)JedisCluster 沒有針對byte[]的API,需要自己擴充套件。
5) JedisTemplate中具體程式碼可以參見附件中JedisTemplate.java