Redis
 sql >> Baza danych >  >> NoSQL >> Redis

ServiceStack.Redis.Sentinel Wykorzystanie

Powinieneś dostarczać hosta serwera Redis Sentinel tylko do RedisSentinel ponieważ pobiera aktywną listę innych serwerów redis master/slave z hosta Sentinel.

Niektóre zmiany w RedisSentinel zostały niedawno dodane w najnowszej v4.0.37 to jest teraz dostępne w MyGet, które obejmuje dodatkowe rejestrowanie i wywołania zwrotne zdarzeń Redis Sentinel. Nowa v4.0.37 API wygląda tak:

var sentinel = new RedisSentinel(sentinelHost, masterName);

Uruchomienie RedisSentinel spowoduje nawiązanie połączenia z Sentinel Host i zwrócenie wstępnie skonfigurowanego RedisClientManager (tj. puli połączeń redis) z aktywnym

var redisManager = sentinel.Start();

Które następnie możesz zarejestrować w MKOl za pomocą:

container.Register<IRedisClientsManager>(redisManager);

RedisSentinel powinien następnie nasłuchiwać zmian master/slave z hostów Sentinel i przełączać awaryjnie redisManager odpowiednio. Istniejące połączenia w puli są następnie usuwane i zastępowane nową pulą dla nowo skonfigurowanych hostów. Wszystkie aktywne połączenia poza pulą będą zgłaszać wyjątki połączenia, jeśli zostaną ponownie użyte, następnym razem, gdy RedisClient zostanie pobrany z puli, zostanie skonfigurowany z nowymi hostami.

Oddzwonienia i rejestrowanie

Oto przykład wykorzystania nowych wywołań zwrotnych do introspekcji zdarzeń RedisServer:

var sentinel = new RedisSentinel(sentinelHost, masterName)
{
    OnFailover = manager => 
    {
        "Redis Managers were Failed Over to new hosts".Print();
    },
    OnWorkerError = ex =>
    {
        "Worker error: {0}".Print(ex);
    },
    OnSentinelMessageReceived = (channel, msg) =>
    {
        "Received '{0}' on channel '{1}' from Sentinel".Print(channel, msg);
    },                
};

Rejestrowanie tych zdarzeń można również włączyć, konfigurując Logowanie w ServiceStack:

LogManager.LogFactory = new ConsoleLogFactory(debugEnabled:false);

Istnieje również dodatkowa jawna funkcja FailoverToSentinelHosts() które mogą być użyte do wymuszenia RedisSentinel do ponownego wyszukiwania i przełączania awaryjnego do najnowszych hostów master/slave, np.:

var sentinelInfo = sentinel.FailoverToSentinelHosts();

Nowe hosty są dostępne w zwróconym sentinelInfo:

"Failed over to read/write: {0}, read-only: {1}".Print(
    sentinelInfo.RedisMasters, sentinelInfo.RedisSlaves);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zdobyć wszystkie klucze z Redis za pomocą szablonu redis

  2. Problemy z uruchomieniem instancji OAuthd

  3. Jak zaimplementować transakcję z wycofaniem w Redis

  4. Czy powinienem utworzyć nowego klienta Redis dla każdego połączenia?

  5. Przekierowanie portów za pomocą nginx z java