Como o StackExchange.Redis usa vários pontos de extremidade e conexões?

Conforme explicado no StackExchange.RedisDocumentação básica, você pode conectar-se a vários servidores Redis e o StackExchange.Redis determinará automaticamente a configuração mestre / escravo. Citando a parte relevante:

Um cenário mais complicado pode envolver uma configuração de mestre / escravo; para esse uso, basta especificar todos os nós desejados que compõem esse nível de redisposição lógica (ele identificará automaticamente o mestre):

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

Eu realizei um teste no qual desencadeei um failover, de modo que o mestre caísse um pouco, fazendo com que o velho escravo se tornasse o novo mestre e o velho mestre se tornasse o novo escravo. Percebi que, apesar dessa mudança,StackExchange.Redis continua enviando comandos para o antigo mestre, causando falha nas operações de gravação.

Perguntas sobre o que precede:

Como o StackExchange.Redis decide qual terminal usar?Como vários pontos de extremidade (como no exemplo acima) devem ser usados?

Também notei que, para cada conexão, o StackExchange.Redis é aberto.dois conexões físicas, uma das quais é algum tipo de assinatura. Para que isso é usado exatamente? É usado pelas instâncias do Sentinel?

questionAnswers(1)

yourAnswerToTheQuestion