2016-09-15 57 views
1

比方說,我有3個Web應用程序A在負載均衡器後面運行(全部在不同的機器上)。Redis集羣對不同主機有什麼好處?

在多個實例上運行Redis有沒有好處?如果是這樣,您如何在多個Redis實例之間實現平衡?

我想我很好奇這種設置的優點/缺點。

如果您使用多個Web應用程序的實例,這個問題出現的全部原因是不會首先使用Redis的某些好處被否定?與Redis的本地機器上的互動似乎將是比在實例的記憶拉的數據,然後移動它通過網絡向實例B.

回答

2

快得多是否有更多的運行Redis的的好處比一個例子?

是的。至少有三個好處。

  1. Redis是單線程的(事實上,它有多個線程,但大多數工作是在一個線程中完成的)。通過多個實例,您可以獲得更好的性能。
  2. Redis將數據存儲在內存中,並且存儲限制爲單個機器內存的大小。爲了存儲更多數據,您可以在不同的機器上部署多個Redis實例,並且每個實例存儲整個數據的不同部分。
  3. 您可以讓Redis主實例及其從屬實例在2臺不同的機器上運行。如果運行主實例的計算機處於關閉狀態,則從屬實例仍然可以處理這些請求。

如果是這樣,您如何在多個Redis實例之間實現平衡?

我不確定你的意思是什麼奇偶。你的意思是主從關係嗎? Redis可以有一個擁有多個奴隸的主人,每個奴隸甚至可以擁有自己的奴隸(如果我沒有記錯的話)。

如果您使用多個Web應用程序的實例,首先不會使用Redis的某些好處被否定?與Redis的本地機器上的互動似乎將是比在實例的記憶拉的數據,然後移動它通過網絡向實例B.快得多

如果部署Redis的實例和Web應用程序實例在2臺不同的機器上,您必須確保2臺機器之間的網絡具有低延遲

+0

偉大的信息。當我說平價時,我的意思是可能有2個Redis實例保持相同。所以如果你設置了主/從。你如何實現兩者之間的數據平衡。 – david

+0

不幸的是,Redis的主從模型並不是很強的一致性,它只能支持最終的一致性。這意味着,當您向主設備寫入一些密鑰時,您無法從主設備獲取這些更新,直到主設備和從設備之間的同步完成。 –