Моя конфигурация следующая:
Код: Выделить всё
config.EndPoints.Add(IPAddress.Parse("Node1_IP"), port);
config.EndPoints.Add(IPAddress.Parse("Node2_IP"), port);
config.EndPoints.Add(IPAddress.Parse("Node3_IP"), port);
config.Password = "password";
config.DefaultDatabase = 0;
config.ConnectTimeout = ConfigurationOptionsConnectTimeout;
config.AsyncTimeout = ConfigurationOptionsConnectTimeout;
config.ConnectRetry = InitialConnectRetries;
config.ReconnectRetryPolicy = new ExponentialRetry(DeltaBackOffMilliseconds);
config.AbortOnConnectFail = false;
Node2 Диапазон HashSlot: 8192-16383
Node3 не имеет HashSlot диапазон, я думаю, это как раб.
Ошибка:
Код: Выделить всё
StackExchange.Redis.RedisConnectionException: Endpoint Node1_IP:Port serving hashslot 14371 is
not reachable at this point of time. Please check connectTimeout value. If it is low, try increasing it
to give the ConnectionMultiplexer a chance to recover from the network disconnect. IOCP:
(Busy=0,Free=1000,Min=6,Max=1000), WORKER: (Busy=0,Free=8191,Min=6,Max=8191), Local-CPU: n/a
Попытка сохранить некоторое значение ключа в базе данных.
Ошибка выше. происходит, когда мой ключ хешируется (на основе хэш-функции Redis) в хеш-слоте, принадлежащем диапазону хеш-слотов Node2.
Ключи, хешированные в диапазоне хеш-слотов узла 1, сохраняются успешно.
ЕСЛИ я переупорядочиваю конечные точки в конфигурации, добавляя сначала Node2_IP, а затем Node1_IP, тогда ключи, хэшированные в хэш-слотах Node2, могут быть успешно сохранены, но ключи, которые хешируются в диапазоне хеш-слотов Node1, соответственно, вызывают ту же ошибку.
Подробнее здесь: https://stackoverflow.com/questions/609 ... ng-hashslo