Redis
 sql >> база данни >  >> NoSQL >> Redis

Използване на ServiceStack.Redis.Sentinel

Трябва да предоставяте само хоста на Redis Sentinel Server на RedisSentinel тъй като получава активния списък на други главни/подчинени редис сървъри от хоста Sentinel.

Някои промени в RedisSentinel бяха добавени наскоро в най-новата v4.0.37 това вече е достъпно в MyGet, което включва допълнително регистриране и обратни извиквания на събития Redis Sentinel. Новата v4.0.37 API изглежда така:

var sentinel = new RedisSentinel(sentinelHost, masterName);

Стартирането на RedisSentinel ще се свърже със Sentinel Host и ще върне предварително конфигуриран RedisClientManager (т.е. пул за връзки на redis) с активния

var redisManager = sentinel.Start();

Което след това можете да се регистрирате в МОК с:

container.Register<IRedisClientsManager>(redisManager);

RedisSentinel след това трябва да слуша промените главен/подчинен от хостовете на Sentinel и превключва redisManager съответно. След това съществуващите връзки в пула се изхвърлят и заменят с нов пул за новоконфигурираните хостове. Всички активни връзки извън пула ще хвърлят изключения за връзка, ако се използват отново, следващия път, когато RedisClient бъде извлечен от пула, той ще бъде конфигуриран с новите хостове.

Обратни повиквания и регистриране

Ето пример за това как можете да използвате новите обратни извиквания, за да интроспектирате събитията на 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);
    },                
};

Регистрирането на тези събития може също да бъде активирано чрез конфигуриране на влизане в ServiceStack:

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

Има и допълнителен изричен FailoverToSentinelHosts() който може да се използва за принудително използване на RedisSentinel за повторно търсене и преминаване към най-новите главни/подчинени хостове, напр.:

var sentinelInfo = sentinel.FailoverToSentinelHosts();

Новите хостове са налични във върнатата 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. Забавено изпълнение/планиране с Redis?

  2. Java конвертира байтове в двоичен безопасен низ

  3. Redis pub/sub за чат сървър в node.js

  4. Redis не може да се свърже при натоварено натоварване

  5. Кога да използваме Redis вместо MySQL за PHP приложения?