StackExchange.Redis如何使用多个端点和连接?

时间:2015-03-25 04:43:38

标签: redis stackexchange.redis

如StackExchange.Redis Basics documentation中所述,您可以连接到多个Redis服务器,StackExchange.Redis将自动确定主/从设置。引用相关部分:

  

更复杂的情况可能涉及主/从设置;对于此用法,只需指定构成该逻辑redis层的所有所需节点(它将自动识别主节点):

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379");

我执行了一个测试,其中我触发了一个故障转移,这样主设备会下降一点,导致旧的从设备成为新的主设备,旧的主设备成为新的主设备。我注意到,尽管发生了这种变化, StackExchange.Redis仍然向旧主机发送命令,导致写操作失败。

有关上述问题:

  1. StackExchange.Redis如何决定使用哪个端点?
  2. 如何使用多个端点(如上例所示)?
  3. 我还注意到,对于每个连接,StackExchange.Redis打开两个物理连接,其中一个是某种订阅。这究竟用于什么?它是由Sentinel实例使用的吗?

1 个答案:

答案 0 :(得分:4)

应该发生的是它使用了许多东西(特别是定义的复制配置)来确定哪个是主服务器,并在适当的服务器上引导流量(尊重&#34) ; server"参数,默认为"更喜欢master",但总是向主服务器发送写操作。)

如果"无法写入只读奴隶" (我无法记住确切的文字)错误,它将尝试重新建立配置,自动切换以尊重这一点。不幸的是,redis不会广播配置更改,因此库无法提前检测到这一点。

请注意,如果您使用库方法更改master,则可以利用pub / sub立即自动检测更改。

重新建立第二个连接:这将是pub / sub;它会提前旋转,因为默认情况下它会尝试侦听特定于库的配置广播。

相关问题