5

しばらくの間、アプリでASP.NET Redis セッション状態プロバイダーを構成しようとしています。この投稿のおかげで、最終的にマスターに直接接続し、キーを設定/取得することができました: ASP.NET セッション状態プロバイダーを使用して Redis サーバーに接続できません

さて、私の次の質問は... これを Sentinel 構成で動作させることです。

SENTINEL get-master-addr-by-name master-dev-sessionstateマスターを決定するコマンドを熟知しています。このプロバイダーにはこれが組み込まれていますか? 上にリンクされたブログ投稿のコメント (これは、これに関する唯一のドキュメントでもあります) に基づいて、connectionString 属性を使用して複数のホストを渡すことができるように思われます。ただし、これらの複数のホストが Sentinel を意図しているかどうかはわかりません。

<connectionStrings>
  <add name="RedisConnection" connectionString="1.2.3.4:5,6.7.8.9:10,abortConnect=false,ssl=false,password=XXXXXX,operationTimeoutInMilliseconds=5000"/>
</connectionStrings>

<sessionState mode="Custom" customProvider="MySessionStateStore">
  <providers>
    <clear/>
    <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="RedisConnection"/>
  </providers>
</sessionState>

このように接続を構成すると、次のエラーが表示されます。

追加情報: redis サーバーに接続できませんでした。切断されたマルチプレクサを作成するには、AbortOnConnectFail を無効にします。

接続文字列にマスター IP しかない場合でも、このエラーが発生します。上記のように、接続文字列に abortConnect="false" が含まれています。これは、実行するように指示しているものです。これが接続文字列に存在するかどうかに関係なく、同じエラーが発生します。

これを念頭に置いて、ここに私の質問があります...

  1. このプロバイダーは Sentinel 構成をサポートしていますか?
  2. はいの場合、接続文字列の正しい形式は何ですか?
  3. これに関する他の優れたドキュメントリソースはありますか? Microsoft のサイトで、そのブログ投稿以外の情報を見つけることさえできませんでした。

編集: これはカスタムのローカル Redis インストールであることに注意してください。Azure を介して実行していません。

編集: 最近、作業構成を Sentinel に向けようとしましたが、「この操作にサービスを提供するための接続がありません: EVAL.」というメッセージが表示されます。これにより、このプロバイダーには Sentinel のサポートがないと思われます。誰でもこれを確認できますか?

4

2 に答える 2

2

このプロバイダーをプライベート redis インストールに使用しています。ドキュメントを理解している限り、このプロバイダーはパッケージ StackExchange.Redis.Strongname と ConnectionMultiplexer を構成に使用しています。このライブラリでは、説明されている構成オプションを使用できます。さらに、このドキュメントには、センチネル サポート (serviceName) が現在実装されていないと記載されています。

それにもかかわらず、なぜセンチネルと通信する必要があるのか​​ 疑問に思います.ConnectionMultiplexerはマスタースレーブセットアップを解決できますドキュメントを参照してください。さらに、redis インスタンスをシャットダウンしてこの動作をテストし、ネットワーク トラフィックを調べました。ConnectionMultiplexer のドキュメントをご覧ください。

より複雑なシナリオには、マスター/スレーブのセットアップが含まれる場合があります。この使用法では、その論理 Redis 層を構成する必要なすべてのノードを指定するだけです (マスターが自動的に識別されます)。

さらに、私の構成設定は次のようになります。

 <add   name="MySessionStateStore" 
    type="Microsoft.Web.Redis.RedisSessionStateProvider"
    connectionString="XXXXXX:6379,XXXXXX:6379,XXXXXX:6379"  
    applicationName="myFancyApp"ssl="false"/>

MS.RedisSessionState Provider に関しては、サイトの横にある次のチュートリアルを使用しました。

于 2015-09-24T07:27:00.840 に答える