sql >> Databasteknik >  >> NoSQL >> Redis

Användning av ServiceStack.Redis.Sentinel

Du bör endast tillhandahålla värden för Redis Sentinel Server till RedisSentinel eftersom den får den aktiva listan över andra master/slave redis-servrar från Sentinel-värden.

Vissa ändringar av RedisSentinel lades nyligen till i den senaste v4.0.37 som nu är tillgängligt på MyGet som inkluderar extra loggning och återuppringningar av Redis Sentinel-händelser. Den nya v4.0.37 API ser ut så här:

var sentinel = new RedisSentinel(sentinelHost, masterName);

Om du startar RedisSentinel kommer du att ansluta till Sentinel-värden och returnera en förkonfigurerad RedisClientManager (dvs. Redis-anslutningspool) med den aktiva

var redisManager = sentinel.Start();

Som du sedan kan registrera i IOC med:

container.Register<IRedisClientsManager>(redisManager);

RedisSentinel bör sedan lyssna på master-/slavändringar från Sentinel-värdarna och failover redisManager följaktligen. De befintliga anslutningarna i poolen kasseras sedan och ersätts med en ny pool för de nykonfigurerade värdarna. Alla aktiva anslutningar utanför poolen kommer att kasta anslutningsundantag om de används igen, nästa gång RedisClienten hämtas från poolen kommer den att konfigureras med de nya värdarna.

Återuppringningar och loggning

Här är ett exempel på hur du kan använda de nya återuppringningarna för att introspektera RedisServer-händelserna:

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);
    },                
};

Loggning av dessa händelser kan också aktiveras genom att konfigurera Logga in ServiceStack:

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

Det finns också en extra explicit FailoverToSentinelHosts() som kan användas för att tvinga fram RedisSentinel för att slå om och över till de senaste master-/slavvärdarna, t.ex.:

var sentinelInfo = sentinel.FailoverToSentinelHosts();

De nya värdarna är tillgängliga i den returnerade sentinelInfo:

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



  1. konvertera databas från mysql till mongoDb

  2. MongoDB $substrBytes

  3. Geografiskt fördelade MongoDB-kluster på AWS i EU-regionen

  4. Problem med MongoDB GridFS att spara filer med Node.JS