3

Google Compute Engine でデフォルトの Redis クラスターをプロビジョニングすると、1 つのマスターと 2 つの読み取り専用スレーブがあり、各マシンで Redis Sentinel が実行されています。以前のクラスターを考えると、ServiceStack サービスでこれを使用したいと思いますが、Sentinel の設定には困惑しています。通常、次のようなことを行います。

container.Register<IRedisClientsManager>(c =>
    new RedisManagerPool(container.Resolve<IAppSettings>().GetString("Redis:Master")));
var cacheClient = container.Resolve<IRedisClientsManager>().GetCacheClient();
container.Register(cacheClient);

このセットアップではいくつかの点が不完全です。マスターと 2 つの読み取り専用スレーブを指定し、Sentinel を構成するにはどうすればよいですか?

4

1 に答える 1

1

ServiceStack.Redisの RedisSentinel サポートはクラスで利用できますが、RedisSentinelまだテスト中であるため、まだ発表されていません。この以前の StackOverflow Answer で、RedisSentinelの使用方法と構成方法に関する情報を見つけることができます。

RedisSentinel の構成

Redis Sentinel を使用する場合、個々のマスター/スレーブ接続を管理するのは redis Sentinel 外部プロセスであるため、Sentinel ホストを構成し、個々のマスター/スレーブ接続を無視するだけで済みます。

RedisClientManager の構成

または、 Redis クライアント マネージャーを使用している場合は、反対のことを行います。つまり、センチネル ホストを無視し、マスター ホストとスレーブ ホストで Redis クライアント マネージャーを構成します。PooledRedisClientManagerのみが、読み取り/書き込み/マスター ホストと読み取り専用/スレーブ ホストの両方の構成をサポートします。次に例を示します。

container.Register<IRedisClientsManager>(c => 
    new PooledRedisClientManager(redisReadWriteHosts, redisReadOnlyHosts) { 
        ConnectTimeout = 100,
        //...
    });
于 2015-03-11T05:33:44.733 に答える