2016-12-16 106 views
2

我爲我的生產環境和HA使用redis服務器我正在使用redis sentinel。但是,閱讀文檔時,當客戶端連接到標記時,標記爲客戶端提供主Redis服務器。從從服務器讀取Redis哨兵

是否所有讀取和寫入操作都在主服務器上進行,而從服務器僅用於故障切換,或者我們可以使用從服務器來讀取數據?

+0

哪個redis客戶端是您的應用程序使用的。 Jredis, – Tuco

+0

。我正在使用spring數據redis。 –

+0

我不認爲Spring的數據redis支持它。像Lettuce這樣的一些Java客戶端支持它。由於redis速度非常快,因此大師的閱讀和寫作基本上都可以。有時當主從設備n之間存在輕微波動時,從設備與主設備同步,從設備可能非常緩慢以響應獲取呼叫。 – Tuco

回答

1

但是讀取文檔時,當客戶端連接到標記時,標記爲客戶端提供了主Redis服務器。

不是,它會給你你的要求。如果你要求主人,你會得到主人。如果你問奴隸,它會返回奴隸名單。您使用sentinel master <name>獲取主設備,並使用sentinel slaves <name>獲取從設備列表。

因此,如果您想對從站執行只讀操作,請使用哨兵連接來獲取從站列表,然後打開一個或多個從站的連接。棘手的部分將是,你會希望你的代碼監視和檢測故障轉移,所以你知道你的奴隸已被提升,你可以得到新的奴隸列表使用。

旁註:不要認爲它是「通過哨兵連接到redis」。這將是不準確的說你「通過DNS服務器連接到Web服務器」 - 哨兵是你的查詢服務,而不是代理連接。

+0

「旁註:不要認爲它是」通過sentinel連接到redis「,這會和說」通過DNS服務器連接到web服務器「一樣不準確 - sentinel是您的查找服務,而不是代理連接。 - 真正幫助我理解了哨兵的真正作用。 – kapad