2014-09-29 82 views
1

在C#應用程序中使用StackExchange.Redis客戶端時,我試圖使用PubSub在運行相同應用程序的Web服務器之間執行跨服務器通信。在此模型中,每臺服務器都運行其自己的Redis服務器,並且其連接多路複用器將本地服務器設置爲列表中的第一臺服務器。換句話說,SERVER_A和SERVER_B每個運行在端口6379一Redis的服務器,並具有連接字符串如下:當連接重新排序時,StackExchange Redis .NET客戶端沒有收到消息

SERVER_A --> "SERVER_A:6379,SERVER_B:6379" 
SERVER_B --> "SERVER_B:6379,SERVER_A:6379" 

使用外部客戶端訂閱到每個Redis的服務器上,我可以看到SERVER_A發佈消息到其本地的Redis服務器。但是,儘管通過多路複用器建立了連接,SERVER_B仍未收到消息。當我重新排列連接的順序以使它們匹配時,則來自A的消息被B拾取。設置中是否存在某些內容或者需要這樣做,以便連接多路複用器將偵聽所有服務器上的預訂,或者這是StackExchange.Redis客戶端中的一個錯誤?

回答

0

您在描述中沒有提及任何複製。當SE.Redis連接到多個服務器它旨在是一個相關家族服務器 - 例如,任一:

  • 兩個或更多2. *通過主相關服務器/從
  • 三個或更多個3. *通過正式集羣相關的服務器

複製組具有pub/sub的分發機制。兩臺斷開連接的服務器:不。

+0

好的,這是有道理的;我們的安裝程序沒有正式集羣,因爲我們在Windows上運行Redis,並且我們無法使用主/從,因爲每個Redis服務器都需要可寫。我們實際上有點嘲笑主/從,讓我們的應用程序使用IEnumerable 寫入兩個Redis服務器,然後使用配置的單個ConnectionMultiplexer進行讀取。我們剛剛進入PubSub並無法弄清楚發生了什麼事情。 – saluce 2014-09-30 14:27:39

+0

@saluce there * *是一個選項,允許奴隸是可寫的,但這意味着他們分歧,不會成爲一個真正的主/從 - 同時,在主人發佈會去奴隸,但發佈在奴隸沒有達到主人。本週有關Redis郵件列表的一個有趣的討論關於多主複製(與羣集不同),但這僅僅是第三方的隨機尖峯,在MSOpenTech的Windows版本中肯定不存在。 – 2014-10-01 09:02:33

相關問題