2017-10-10 15 views
0

私はRedis分散キャッシュと連携し、フェイルオーバーパターンをハッシュデータ配布とマージしています。私の設定は:Stackexchange Redis Sentinel Client

  Sentinel1     Sentinel4 
Master1      Master2 
      Sentinel2     Sentinel5 
Slave1      Slave2 
      Sentinel3     Sentinel6 

私のコードでは、私はセンチネルを使ってマスターキャッシュにアクセスする必要があります。

どちらを指しているのですか?

私は、ConnectionMultiplexerの設定内にすべてのセンチネルenpointを登録する必要があると思います。

私はこのコードを使用してセンチネルために私のクライアントを接続することができるメートル:

var options = new ConfigurationOptions() 
    { 
     CommandMap = CommandMap.Sentinel, 
     EndPoints = { { IP, Port } }, 
     AllowAdmin = true, 
     TieBreaker = "", 
     ServiceName = ServiceName, 
     SyncTimeout = 5000, 
     AbortOnConnectFail = true, 
     Ssl = false 
    }; 
    var connection = ConnectionMultiplexer.Connect(options, Console.Out); 
    return connection; 

は一度私がのSetStringとのgetStringなどの標準Redisの方法を使用して、キャッシュデータベースにアクセスするために必要な接続を持って...そう

db = conn.getDatabase(); 
db.getString(key); 
db.setString(key, value); 

この時点では、「この操作はコマンドマップで無効になっており、使用できません:SETEX」またはGETというエラーが表示されます。

私はセンチネルに現在のマスターとの接続を求める方法があるはずですが、私は多くの便利なコード例を見つけられません。 誰も私を助けることができますか?

答えて

0

あなたがSentinelに接続すると、Sentinel固有のコマンドのみを発行できます。代わりにのようにRedisインスタンスに接続してみてください。

RedisクライアントがRedis configに変更があったことを知っています(これは私が今研究しているものであり、あなたの質問を見つけた方法です)。その部分がStackexchange.Redisに実装されていないと思いますまだ - thisを見てください。

関連する問題