Jak wyjaśniono w StackExchange.Redis Basics documentation, można połączyć się z wieloma serwerami Redis, a StackExchange.Redis automatycznie określi konfigurację master/slave. Cytując odpowiednią część:W jaki sposób StackExchange.Redis używa wielu punktów końcowych i połączeń?
Bardziej skomplikowany scenariusz może wymagać konfiguracji master/slave; dla tego zastosowania, należy określić wszystkie żądane węzły, które tworzą ten logiczny Redis Poziom (zostanie ona automatycznie zidentyfikować Master):
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379");
Przeprowadziłem test, w którym uruchamiany jest przełączanie awaryjne, tak że mistrz zejdzie na chwilę, powodując, że stary niewolnik stanie się nowym panem, a stary pan stanie się nowym niewolnikiem. Zauważyłem, że pomimo tej zmiany, StackExchange.Redis wysyła polecenia do starego mistrza, powodując niepowodzenie operacji zapisu.
Pytania dotyczące powyższego:
- Jak StackExchange.Redis zdecydować, który punkt końcowy w użyciu?
- Jak korzystać z wielu punktów końcowych (jak w powyższym przykładzie)?
Zauważyłem również, że dla każdego łączenia, StackExchange.Redis otwiera dwa połączeń fizycznych, z których jedna jest pewnego rodzaju abonamentu. Do czego dokładnie to służy? Czy jest używany przez instancje Sentinel?
Dzięki za odpowiedź. Nie jestem pewien, czy podążam ... co masz na myśli, mówiąc o metodach bibliotecznych, aby zmienić konfigurację specyficzną dla master/library? Ponadto, kiedy spowodowałem przełączenie awaryjne master/slave, faktycznie czekałem kilka sekund i kilka razy próbowałem wysłać SET ponownie i zawsze wysyłałem go do starego master. – Gigi
@Gigi Będę musiał zbadać problem 'SET'; z drugiej: 'IServer.MakeMaster (...)' –
@MarcGravell Jaki jest parametr "serwera", o którym wspomniałeś? Nie mogłem go znaleźć w typie ConfigurationOptions. –