運行Redis Sentinel將須要如下兩個可執行文件之一:redis-sentinel或redis-server。java
使用redis-sentinel可執行文件,你能夠使用如下命令運行Redis Sentinel:程序員
1 redis-sentinel /path/to/sentinel.conf
其中「 /path/to/sentinel.conf」是Sentinel配置文件的路徑。redis
藉助redis-server可執行文件,你能夠使用如下命令運行Redis Sentinel:數據庫
1 redis-server /path/to/sentinel.conf --sentinel
請注意,在兩種狀況下,都必須提供指向Sentinel配置文件的連接。 運行Redis Sentinel時須要使用配置文件,以便在系統從新啓動時保存系統的當前狀態。編程
Redis Sentinel配置文件示例以下所示:api
1 sentinel monitor mymaster 127.0.0.1 6379 2 2 3 sentinel down-after-milliseconds mymaster 60000 4 5 sentinel failover-timeout mymaster 180000 6 7 sentinel parallel-syncs mymaster 1 8 9 sentinel monitor resque 192.168.1.3 6380 4 10 11 sentinel down-after-milliseconds resque 10000 12 13 sentinel failover-timeout resque 180000 14 15 sentinel parallel-syncs resque 5
在此示例中,行``Sentinel Monitor <主組名稱> <ip> <端口> <仲裁>''在給定的IP地址和端口號上定義了一個名爲master-group-name的Sentinel主節點。 法定參數是必須就主節點不可訪問這一事實達成共識的Sentinel進程數。服務器
其餘行定義如下設置:數據結構
「毫秒後降低」:定義將主節點視爲不可達以後通過的毫秒數。架構
「 Sentinel故障轉移超時」:定義Sentinel進程將嘗試投票主節點的故障轉移的時間。框架
「 sentinel parallel-syncs」:定義能夠在故障轉移後同時從新配置爲使用同一主節點的從節點的數量。
對於Java程序員而言,壞消息是Redis Sentinel與Java兼容。 可是,好消息是Redis Sentinel和Java能夠使用諸如Redisson的框架輕鬆地協同工做,Redisson是Redis的Java客戶端,它使用許多熟悉的Java編程語言構造。 Redisson提供了數十種以分佈式方式實現的Java對象,集合,鎖和服務,從而容許用戶在不一樣的應用程序和服務器之間共享它們。
如下代碼示例演示瞭如何在Java中開始使用Redis Sentinel。 設置配置文件和Redisson客戶端後,該應用程序執行一些基本操做以演示將Redis與Java一塊兒使用的可行性。
1 package redis.demo; 2 3 import org.redisson.Redisson; 4 5 import org.redisson.api.RBucket; 6 7 import org.redisson.api.RedissonClient; 8 9 /** 10 11 * Redis Sentinel Java example 12 13 * 14 15 */ 16 17 public class Application 18 19 { 20 21 public static void main( String[] args ) 22 23 { 24 25 Config config = new Config(); 26 27 config.useSentinelServers() 28 29 .addSentinelAddress("redis://127.0.0.1:6379") 30 31 .setMasterName("myMaster"); 32 33 RedissonClient redisson = Redisson.create(config); 34 35 // perform operations 36 37 // implements java.util.concurrent.ConcurrentMap 38 39 RMap<String, String> map = redisson.getMap("simpleMap"); 40 41 map.put("mapKey", "This is a map value"); 42 43 String mapValue = map.get("mapKey"); 44 45 System.out.println("stored map value: " + mapValue); 46 47 // implements java.util.concurrent.locks.Lock 48 49 RLock lock = redisson.getLock("simpleLock"); 50 51 lock.lock(); 52 53 try { 54 55 // do some actions 56 57 } finally { 58 59 lock.unlock(); 60 61 } 62 63 redisson.shutdown(); 64 65 } 66 67 }
總結
請務必注意,Redisson用戶必須指定至少一臺Redis Sentinel服務器和至少一臺Redis主節點。 啓動後,Redisson繼續監視Redis Sentinel中可用的主節點和從節點以及Sentinel節點的列表。 這意味着用戶無需監視Redis拓撲的狀態便可處理故障轉移狀況; Redisson獨自完成了此任務。