2014-09-29 106 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

相关问题