【问题标题】:StackExchange Redis .NET client not getting messages when connections are reorderedStackExchange Redis .NET 客户端在重新排序连接时未收到消息
【发布时间】:2014-09-30 06:11:25
【问题描述】:

在 C# 应用程序中使用 StackExchange.Redis 客户端,我尝试使用 PubSub 在运行同一应用程序的 Web 服务器之间执行跨服务器通信。在该模型中,每台服务器都运行自己的 Redis 服务器,其连接多路复用器将本地服务器设置为列表中的第一个服务器。换句话说,SERVER_A 和 SERVER_B 各自在 6379 端口上运行一个 Redis 服务器,并具有如下连接字符串:

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 客户端中的错误?

【问题讨论】:

    标签: c# stackexchange.redis


    【解决方案1】:

    您在描述中没有提到任何复制。当 SE.Redis 连接到多个服务器时,它旨在成为一个相关的服务器系列 - 例如,任一:

    • 两个或更多 2.* 通过主/从相关的服务器
    • 三个或更多 3.* 服务器通过正式集群关联

    复制组具有发布/订阅的分发机制。两个断开连接的服务器:不要。

    【讨论】:

    • 好吧,有道理;我们的设置没有正式的集群,因为我们在 Windows 上运行 Redis,并且我们不能使用 Master/Slave,因为每个 Redis 服务器都需要可写。实际上,我们通过让我们的应用程序使用IEnumerable<ConnectionMultiplexer> 写入两个 Redis 服务器并使用按问题所述配置的单个 ConnectionMultiplexer 从然后读取来模拟主/从服务器。我们刚刚进入 PubSub,无法弄清楚发生了什么。
    • @saluce there is 是一个允许从属可写的选项,但这意味着它们存在分歧并且不会成为真正的主/从 - 另外,发布在主人会去奴隶,但在奴隶上发布不会到达主人。本周 redis 邮件列表上有一个关于多主复制(不同于集群)的有趣讨论,但这只是第 3 方的随机峰值,在 MSOpenTech windows 版本中肯定不会存在。跨度>
    猜你喜欢
    • 2016-04-29
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2018-03-22
    • 2015-07-21
    • 2022-11-11
    相关资源
    最近更新 更多