キャッシュ接続性
正常に構成した後 NCache、を利用してアプリケーションの開発を開始できます NCache 埋め込むことによって NCache API 呼び出し。これを行うには、キャッシュ接続を確保する必要があります。単一のキャッシュだけでなく複数のキャッシュも単一のアプリケーションで接続できます。さらに、キャッシュはセキュリティ認証情報を使用して接続できます。
Note
この機能は以下でも利用できます NCache Professional.
キャッシュ接続の前提条件
- すべてを使用するために必要な標準的な前提条件について学習するには NCache キャッシュ接続を含むクライアント側の機能については、次のページを参照してください。 クライアント側 API の前提条件.
- APIの詳細については、以下を参照してください。 Iキャッシュ, CacheManager, GetCache, キャッシュ接続オプション.
シングルキャッシュに接続する
NCache は、大阪で ICache
インスタンスを取得するインターフェース NCacheのキャッシュ。 また、 CacheManager
クラスを使用すると、キャッシュ インスタンスに接続できます。 GetCache
方法。
次の例では、実行状態にある demoCache という名前のキャッシュに接続します。
// Specify the cache name
string cacheName = "demoCache";
// Connect to cache
ICache cache = CacheManager.GetCache(cacheName);
Note
操作がフェイルセーフであることを保証するために、で説明されているように、アプリケーション内の潜在的な例外を処理することをお勧めします。 失敗の処理.
複数のキャッシュに接続する
使い方 GetCache
メソッドでは、単一のアプリケーション内で複数のキャッシュに接続できます。 これは、XNUMXつのアプリケーションを使用して複数のキャッシュのデータを管理するのに役立ちます。
次の例では、同じクライアントから XNUMX つのキャッシュ、demoCache と demoClusteredCache に接続します。
// Specify cache names
string cacheName1 = "demoCache";
string cacheName2 = "demoClusteredCache";
// Connect to the caches
ICache cache1 = CacheManager.GetCache(cacheName1);
ICache cache2 = CacheManager.GetCache(cacheName2);
CacheConnectionOptionsを使用してキャッシュに接続する
CacheConnectionOptions
キャッシュへの接続を確立するときに、キャッシュプロパティの値を指定できます。 これらの値は同じであり、 client.ncconf ファイルにソフトウェアを指定する必要があります。
Note
を通じて指定された構成 CacheConnectionOptions
の値を上書きします client.ncconf その特定のクライアントのために。
この例では、 RetryInterval
, ConnectionRetries
, EnableKeepAlive
, KeepAliveInterval
プロパティは変更できます。 このアプリケーションでは、クライアント構成ファイルで指定された値の代わりに、これらの値が使用されます。
// Create new CacheConnectionOptions instance
var options = new CacheConnectionOptions();
// Specify the cache connection options to be set
options.RetryInterval = TimeSpan.FromSeconds(5);
options.ConnectionRetries = 2;
options.EnableKeepAlive = true;
options.KeepAliveInterval = TimeSpan.FromSeconds(30);
// Specify the cache name
string cacheName = "demoCache";
// Connect to cache with CacheConnectionOptions
ICache cache = CacheManager.GetCache(cacheName, options);
ロード バランサーの CacheConnectionOptions を使用してキャッシュに接続する
多くの場合、アプリケーションのデプロイメントではロード バランサーを使用して、サーバーからのリクエストが過大になるのを防ぎます。つまり、クライアントがサーバーに直接アクセスできないようにします。このような状況では、クラスターがすべてのサーバーに確実に接続できるようにするには、 NCache 提供 IsLoadBalancer
以下に示す API:
CacheConnectionOptions cacheConnectionOptions = new CacheConnectionOptions();
cacheConnectionOptions.ServerList = new List<ServerInfo>()
{
new ServerInfo("20.200.20.40", 9800, true)
};
ICache cache = CacheManager.GetCache("demoCache", cacheConnectionOptions);
Note
方法の詳細 NCache これらのロードバランサを扱います こちら.
クラスタ化されたクライアントキャッシュに接続する
Note
使い方 GetCache
XNUMX 回の呼び出しでクラスター化キャッシュとクライアント キャッシュに接続する方法は推奨されません。
を使用して、XNUMX 回の呼び出しでクラスタ化されたキャッシュとクライアント キャッシュに接続できます。 GetCache
方法。 これにより、単一のアプリケーション内の両方のキャッシュが初期化されるため、XNUMX つのアプリケーションを通じて複数のキャッシュのデータを管理できるようになります。
Note
ローカル キャッシュがクライアント キャッシュに接続されている場合、シリアル化はクラスター化キャッシュのシリアル化と同じである必要があります。 両方のキャッシュを事前に構成し、実行状態にする必要があります。
次の例では、 GetCache
方法。
// Specify the cache names
string clusteredCache = "demoCache";
string clientCache = "myClientCache";
CacheConnectionOptions cacheConnectionOptions = new CacheConnectionOptions();
cacheConnectionOptions.LoadBalance = true;
cacheConnectionOptions.ConnectionRetries = 5;
CacheConnectionOptions clientCacheConnectionOptions = new CacheConnectionOptions();
clientCacheConnectionOptions.LoadBalance = true;
clientCacheConnectionOptions.ConnectionRetries = 5;
clientCacheConnectionOptions.Mode = IsolationLevel.OutProc;
// Connect to the caches in a single call
// CacheConnectionOptions which can be null if not required
ICache cache = CacheManager.GetCache(clusteredCache, cacheConnectionOptions, clientCache, clientCacheConnectionOptions);
セキュリティクレデンシャルを使用してキャッシュに接続する
セキュリティが有効になっている場合は、許可されたユーザーが操作を実行できるように、キャッシュへの接続中にセキュリティクレデンシャルを提供する必要があります。 セキュリティの使用の詳細については、 NCacheを参照してください NCache セキュリティ。
// Specify cache name and user credentials
string cacheName = "demoCache";
string userId = "userid";
string password = "mypassword";
// Initialize the CacheConnectionOptions
var options = new CacheConnectionOptions();
// Enter the credentials
options.UserCredentials = new Credentials(userId, password);
// Connect to the cache using the security credentials
ICache cache = CacheManager.GetCache(cacheName, options);
トラブルシューティング
ポートにアクセスできません
ファイアウォールの設定が原因で、クライアントがキャッシュに接続できない場合があります。
回避方法
詳細については、 スタートガイド ファイアウォール設定を変更します。
client.ncconf が見つかりません
クライアントが見つからない場合があります。 client.ncconf キャッシュへの接続中にファイルを保存します。 これは次のような場合に起こります。 NCache ディレクトリ (%NCHOME%
)が設定されていません。
回避方法
If %NCHOME%
が設定されていない場合は、以下の手順に従って環境変数を設定します。
- 右クリックして 開始 ボタンを選択 エントルピー.
- 右側のペインで、をクリックします。 システムの詳細設定.
- システムのプロパティ ウィンドウに移動します 高機能 タブをクリックして 環境変数
- 環境変数 ウィンドウ、下 システム変数 新作.
- 変数名 入力します
%NCHOME%
. - 変数値 入力します
C:\Program Files\NCache
. - クリック OK.
- 次に、同じシステムパスを更新します 環境変数 ウィンドウ、を見つける パス 変数をクリックして 編集.
- 環境変数の編集 ウィンドウ、クリック 新作 と追加
%NCHOME%\bin
リストに。 これにより、ツールを世界中で利用できるようになります。 - クリック OK をクリックして各ウィンドウを閉じます。
リクエストを処理できるサーバーがありません
クライアント/サーバー ポートがファイアウォールによってブロックされているために、クライアントがキャッシュに接続できない場合があります。
回避方法
クライアント/サーバー ポート ( NCache サービスが開始され、さまざまなクライアント接続が受け入れられます)がファイアウォールによってブロックされません。 このポートのデフォルト値は「9800」です。 デフォルト値を次から変更できます Alachisoft.NCache.service.exe.config or Alachisoft.NCache.Service.dll.config ファイルにソフトウェアを指定する必要があります。
サーバーノードと通信できません
クラスター ポートがファイアウォールによってブロックされているために、クラスター ノードが相互に通信できない場合もあります。
Error: "Unable to communicate with server node"
回避方法
ファイアウォールがクライアント/サーバーおよびクラスター ポートを許可しているかどうかを確認してください。 クラスター ポートは、クラスター内のノードが通信するポートです。 これらのポートのデフォルト値は次から変更できます。 NCache 管理センター。 でポート範囲を指定した場合、 NCache Management Center、範囲内のすべてのポートのブロックを解除してください。
クライアントソケットデッドロック
キャッシュサーバーからの応答を長時間待つため、クライアントソケットでデッドロック状態が発生する場合があります。 これにより、多くの待機スレッドが発生し、パフォーマンスの問題が発生する可能性があります。
回避方法
ステップ1: サーバー側の変更
サービス構成ファイルに移動します。
- Windows .NET 4.8: Alachisoft.NCache.service.exe.config に位置 %NCHOME%\ bin \ service
- Windows .NET: Alachisoft.NCache.Service.dll.config に位置 %NCHOME%\ bin \ service
- Linux .NET: Alachisoft.NCache.Daemon.dll.config に位置 / opt /ncache/ bin / service
- Windows Java: Alachisoft.NCache.Service.dll.config に位置 %NCHOME%\ bin \ service
- Linux Java: Alachisoft.NCache.Daemon.dll.config に位置 / opt /ncache/ bin / service
構成ファイルに次の行を追加します。
<add key ="NCacheServer.EnableBadClientDetection" value = "true" />
値「true」は、クライアントソケットでBadClientDetectionが有効になっていることを示します。 これは、クライアントソケットでデッドロック状態が発生した場合、ソケットがリセットされることを意味します。 このプロパティのデフォルト値は「false」です。
<add key ="NCacheServer.ClientSocketSendTimeout" value = "10" />
有効にしたとき BadClientDetection
、デッドロックが発生した場合にソケットがリセットされるまでの時間間隔を指定できます。 このプロパティのデフォルト値は「10」であり、この値は1以上にする必要があります。
他のいくつかのプロパティも導入されています Alachisoft.NCache.service.exe.config この問題を解決するために。 これらのプロパティを次のように構成してください。
<add key ="NCacheServer.EventPriorityRatio" value="30"/>
サーバー側では、イベントとキャッシュ操作に優先キューが使用されます。 というプロパティを使用して、このキューのイベントとキャッシュ操作の比率を構成できます。 EventPriorityRatio
。 このプロパティのデフォルト値は 30 で、イベントとキャッシュ操作の比率が 30:70 であることを示します。 このプロパティの値は 1 未満にすることはできません。
<add key ="NCacheServer.EventBulkCount" value="50"/>
キャッシュ サーバーはイベントをクライアントに一括送信するようになりました。 このプロパティを通じて、一括送信するアイテムの数を設定できます。 デフォルトでは、この値は 50 であり、1 未満にすることはできません。これはクライアント バージョン 4124 以降で使用できます。
<add key ="NCacheServer.EventBulkCollectionInterval" value="2"/>
このプロパティは、バルク数が指定された時間に達しない場合でも、大量のイベントが起動されるまでの時間間隔を秒単位で設定するために使用されます。 EventBulkCount
ユーザーが指定したもの。 このプロパティのデフォルト値は 2 秒で、値を 1 未満にすることはできません。
再起動する NCache これらの変更を有効にするためのサービス。
ステップ2:クライアント側での変更
に次の変更を加えてください アプリの構成/Web.config ファイル:
<configuration>
<appSettings>
<add key ="NCacheClient.AsynchronousEventNotification" value="true"/>
<add key ="NCacheClient.NumberofEventProccesingThreads" value="2"/>
</appSettings>
</configuration>
AsynchronousEventNotification
: イベントがクライアント側で非同期的に発生するか同期的に発生するかを指定します。 デフォルト値は「true」で、イベントが非同期に発生することを示します。 値「false」は、イベントがクライアント側で同期的に発生することを意味します。
NumberofEventProcessingThreads
: ユーザーがイベントを同期的に起動するように構成した場合、このフラグはクライアント側でこれらのイベントを処理するスレッドの数を指定するために使用されます。 値が非常に大きいと、パフォーマンスの問題が発生する可能性があります。
も参照してください
。ネット: Alachisoft.NCache。クライアント 名前空間
Java: comの。alachisoft.ncache。クライアント 名前空間
Node.js: キャッシュ とに提供されます。
Python: ncache。クライアント とに提供されます。