2017-08-31 123 views
1

我有2個Redis服務器一個主機和另一個從機(複製)。一旦師父由於某些原因而關閉,奴隸將成爲主人,並繼續作爲主人,直到該服務器發生錯誤。使用來自nodeJS的sentinal識別Redis主機

我有一個nodeJS服務器,我想將數據推送到當前作爲主服務器運行的Redis。我有一個監控Redis服務器的定點,但我的問題是如何使用nodeJS從定點抓取主信息? 如果有辦法,它是否會自動將數據推送到備用redis服務器,而無需重新啓動服務?

回答

1

ioredis支持標記。像這樣:

var redis = new Redis({ 
    sentinels: [{ host: 'localhost', port: 26379 }, { host: 'localhost', port: 26380 }], 
    name: 'mymaster' 
}); 

redis.set('foo', 'bar'); 

該名稱標識一個redis集羣,您應該在redis sentinel.conf中指定該集羣。你可以參考這個page關於如何配置sentinel。

關於你的第二個問題,見下圖:

ioredis保證連接節點,你永遠是主人即使在故障轉移後。發生故障轉移時,不是嘗試重新連接到故障節點(當它再次可用時它將被降級爲從屬節點),ioredis將要求引導節點爲新的主節點並連接到它。在故障轉移期間發送的所有命令都會排隊等待新建立的連接建立後執行,以避免任何命令丟失。

而node-redis現在不支持它。