sql >> Databáze >  >> NoSQL >> Redis

Použití ServiceStack.Redis.Sentinel

Hostitele serveru Redis Sentinel Server byste měli poskytovat pouze společnosti RedisSentinel jak získá aktivní seznam ostatních master/slave serverů redis od hostitele Sentinel.

Některé změny RedisSentinel byly nedávno přidány v nejnovější v4.0.37 která je nyní k dispozici na MyGet, která zahrnuje extra protokolování a zpětná volání událostí Redis Sentinel. Nová verze 4.0.37 API vypadá takto:

var sentinel = new RedisSentinel(sentinelHost, masterName);

Spuštěním RedisSentinel se připojí k hostiteli Sentinel a vrátí se předem nakonfigurovaný RedisClientManager (tj. fond připojení redis) s aktivním

var redisManager = sentinel.Start();

Které se pak můžete zaregistrovat v MOV pomocí:

container.Register<IRedisClientsManager>(redisManager);

RedisSentinel by pak měl naslouchat změnám master/slave od hostitelů Sentinel a převzetí služeb při selhání redisManager podle toho. Stávající připojení ve fondu jsou poté odstraněna a nahrazena novým fondem pro nově nakonfigurované hostitele. Jakákoli aktivní připojení mimo fond, při opětovném použití vyvolá výjimky připojení, při příštím načtení RedisClient z fondu bude nakonfigurován s novými hostiteli.

Zpětná volání a protokolování

Zde je příklad toho, jak můžete použít nová zpětná volání k introspekci událostí RedisServeru:

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

Protokolování těchto událostí lze také povolit konfigurací Přihlašování v ServiceStack:

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

K dispozici je také další explicitní FailoverToSentinelHosts() které lze použít k vynucení RedisSentinel k opětovnému vyhledání a převzetí služeb při selhání k nejnovějším hostitelům master/slave, např.:

var sentinelInfo = sentinel.FailoverToSentinelHosts();

Noví hostitelé jsou k dispozici v vráceném sentinelInfo:

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



  1. Jak používat MongoDB se sliby v Node.js?

  2. jak předat proměnnou regulárnímu výrazu

  3. MongoDB:Server má varování při spuštění

  4. Jak redis vyprší platnost klíčů?