タイトル: データ キャッシュの CRUD 操作: 概要説明: CRUD 操作を使用してデータ キャッシュを管理します。制御のための同期、応答性のための非同期、パフォーマンスのためのバルク。
正規: https://www.alachisoft.com/resources/docs/ncache/prog-guide/basic-cache-operations.html
データ キャッシュでの CRUD 操作: 概要
NCache データをキーと値のペアとして保存します。つまり、一意の識別子 (キー) がデータ (値) に対して保存されます。 キー値データベースと同様に、 NCache また、CRUD 操作を通じてデータを保存、取得、管理します。 この点について、 NCache アトミック データまたはバルク データを同期的または非同期的にキャッシュするためのさまざまな CRUD API のセットを提供します。 ここでは、概要を説明します NCache-サポートされている基本的な CRUD 操作: Add, インセット, 入手, 削除します.
先に進む前に、データ キャッシュに何を保存するかを理解しておく必要があります。従来の文字列ベースの値に加えて、 NCache 追加が可能 プリミティブデータ型、カスタム オブジェクト、メタデータを含むデータ (キャッシュ項目), データ構造, JSONデータ.
データ キャッシュに追加されるオブジェクトはすべてシリアル化可能である必要があります。 NCache ストアの形式に基づいて、バイナリおよび JSON のシリアル化を処理します。 ネイティブ バイナリ シリアル化を実行できない場合は、 NCache また、独自の コンパクトなシリアル化フレームワーク. JSON ストアの場合、 NCache 提供されたオブジェクトのシリアル化を処理します。 または、追加することもできます NCache 提供されたJSONシリアル化オブジェクト、クロスプラットフォームおよび多言語アプリケーションのサポートを可能にします。
データキャッシュの操作タイプ
NCache 単一または一括アイテムに対する CRUD 操作を許可します。 一方、サポートされている操作モードは同期と非同期です。 ここでは、操作の種類とモードについて簡単に説明します。 NCache.
不可分操作
Note
この機能は以下でも利用できます NCache Professional.
単一のキーと値のペアに対して実行されるすべての操作は、アトミック操作として分類されます。 したがって、そのような操作には XNUMX 回のキャッシュ呼び出しが必要です。 アトミックの動作 追加する、挿入する, 削除します, 取得する 操作については、後のセクションで説明します。
一括操作
Note
この機能は以下でも利用できます NCache Professional.
一括操作を使用すると、100 回のキャッシュ呼び出しで複数のアイテムに対して任意の CRUD 操作を実行できます。 一括操作は 100 つの操作として実行されますが、操作の失敗は個別に処理されます。 これらは、パフォーマンスを向上させるために特別に設計されています。 たとえば、XNUMX 回の一括操作で XNUMX 個のキャッシュ アイテムを取得すると、XNUMX 回のアトミック コールで取得するよりもはるかに高速に実行されます。 この方法では、リモート サーバーへのネットワーク トリップが減少するため、パフォーマンスが向上します。
一括操作は、アプリケーションの開始時にキャッシュされたデータを一括で取得したり、クエリ結果を一括してキャッシュに挿入したりする場合に特に便利です。
同期操作
Note
この機能は以下でも利用できます NCache Professional.
NCache アトミック アイテムまたは大量のアイテムを同期的に追加できます。 同期操作はブロッキング呼び出しとして発生するため、クライアントはサーバーからの応答を待って、さらに操作を実行する必要があります。 操作が行われると、制御はアプリケーションに戻ります。
クライアントは操作の完了を待つ必要がありますが、同期操作では、コントロールがユーザーに返されるときに、操作の成功/失敗ステータスを返すことができます。 このような操作は、キャッシュとの接続障害または内部システム エラーが原因で失敗する場合があります。 このプロセスにより、アプリケーションは、障害シナリオが発生するとすぐに処理するための制御が提供されます。 したがって、重要なデータを処理する場合、これらの操作は不可欠です。
さらに、同期操作は逐次的です。これは、操作が相互に依存している場合に便利です。たとえば、電子商取引サイトは、フラッシュ セールのアイテムを 2 時間のみ同期的に追加し、その後、フラッシュ セールのアイテムを取得します。販売中のキャッシュされたアイテムを取得する際、これらのアイテムが最初にデータ キャッシュに正常に追加されたことが保証されていれば、失敗を回避できます。特に明記されていない限り、基本的な CRUD 操作はデフォルトで同期です。
非同期操作
非同期操作はバックグラウンドで実行されるため、クライアントは追加の操作を実行するためにサーバーからの応答を待つ必要がありません。データ キャッシュ上で実行されるアクションのリストはクライアント側のキューに保持され、専用のバックグラウンド スレッドがそれらをサーバー側に送信し続けます。操作がキューに入れられるとすぐに、制御はアプリケーションに戻ります。これにより、アプリケーションの全体的な応答性が向上します。
非同期操作は、応答時間がアプリケーションにとって重要であり、操作の失敗がアプリケーションの動作を妨げない場合に役立ちます。
非同期操作は操作自体の失敗または成功を通知しないため、非同期呼び出しは NCache のオブジェクトを返します タスククラス これをさらに使用して、操作のステータスを取得できます。 これに関連して、実行された操作の成功または失敗を示すために、次のステータスフラグがTaskクラスによって提供されます。
- 完成されました: 指定された操作がキャッシュで正常に発生したかどうかを通知します。
- IsFaulted: 指定された操作が発生したが失敗した場合に通知します。
- IsCanceled: 内部の理由により、指定された操作がキャンセルされた場合に通知します。
データ キャッシュの基本的な CRUD
一度キャッシュを操作できます キャッシュのインスタンスを取得する。 によってサポートされている基本的なCRUD操作の動作と動作を見てみましょう NCache.
追加/挿入
アイテムは、を使用してキャッシュに追加できます Add or インセット 方法。 ただし、どちらの操作も動作が異なります。 Add
指定されたキーがキャッシュに存在しない場合にのみ、特定のキーを使用してアイテムをキャッシュに正常に追加し、それ以外の場合は例外をスローします。 一度に複数のクライアントがアイテムをキャッシュに追加することを禁止したいとします。 次に、 Add
クライアントがキャッシュにすでに存在するアイテムを追加しようとした場合に操作の失敗を通知するメソッド。
一方、 Insert
更新操作としても機能します。 を使用してアイテムを追加する場合 Insert
メソッドで、指定されたキーが既にキャッシュに存在する場合、キャッシュ内の既存のアイテムが置き換えられます。 アイテムを追加するだけでなく、キャッシュ内のアイテムを安全に更新します。
最も単純なケースは、キーと値を指定してアイテムをキャッシュに直接追加または挿入することです。 ただし、これらのメソッドには、高度なオプションを使用してアイテムをキャッシュに追加/挿入できるオーバーロードがいくつかあります。 Add/Insert の関連する使用例と動作については、以下で説明します。
- 大量のデータを追加します。 を使用して、データのコレクションを同時にキャッシュに追加できます。
AddBulk
/InsertBulk
方法。AddBulk
既存のキーを持つ項目の追加に失敗したことの通知を具体的に要求する場合に使用できます。 この点に関して、失敗した操作は、対応するキーを指定するディクショナリを例外としてアプリケーションに返すことにより、個別に強調表示されます。 たとえば、大量の 100 項目がキャッシュに追加され、そのうちの 20 項目が既にキャッシュに存在する場合、残りの 80 項目がキャッシュに追加されます。 既存の 20 項目は、失敗した操作の辞書としてアプリケーションに返されます。
複数のアイテムを追加して既存のアイテムを更新する際の失敗を回避したい場合は、 InsertBulk
方法。 キャッシュ内の既存のアイテムを上書きし、何らかの理由で追加/更新に失敗したキーのディクショナリを返します。
非同期でデータを追加します。 クライアントアプリケーションの効率を向上させたい場合は、アイテムを非同期でキャッシュに追加/挿入できます。
AddAsync
/InsertAsync
メソッドはバックグラウンドでアイテムを追加し、操作が完了するとTaskオブジェクトを返します。 クライアントは、に記載されているステータスフラグを確認できます 非同期操作 追加のコードを使用せずに追加/挿入操作の成功または失敗を検証します。依存関係のあるデータを追加します。 依存関係のあるアイテムをキャッシュに追加/挿入できます。 キャッシュデータは一時的なものであるため、ユーザー固有の基準に基づいて特定のデータをキャッシュから削除する必要がある場合があります。 その場合、 NCache アイテムの追加/挿入中に依存関係を設定できるようにすることで、キャッシュされたデータを無効にするさまざまな方法を提供します。 具体的には、に基づいて依存関係を設定できます 時間, データをキャッシュする, データベース、および外部ソースを使用して、アプリケーションの要件に応じて特定の項目を無効にし、最終的には削除します。
同時書き込み: アイテムをキャッシュに挿入できます ロッキング マルチスレッドまたはマルチクライアント アプリケーションの場合に同時アクセスを制御します。 これは、同時更新操作がキャッシュで実行されるときにデータの整合性を維持するのに役立ちます。 アイテムを排他的にロックするか、キャッシュに追加されたアイテムのバージョンで作業できます。 アイテムのバージョンは、キャッシュ内のすべてのアイテムのキャッシュによって維持され、更新操作が実行されるたびに自動的にインクリメントされます。
データ ソースに書き込みます。 高度なケースでは、データ ソースが構成されている場合、追加/挿入操作中にデータ ソースだけでなくキャッシュでもデータが追加/更新されます。
リクエスト実行フロー: 追加/挿入操作が発生すると、基礎となるリクエスト実行プロセスでは、シリアル化、暗号化、圧縮の手順が実行されます。 まず、提供されたデータがシリアル化されます。 暗号化が設定されている場合は、クライアント側で暗号化されます。 ネットワークを通過するデータは簡単に傍受される可能性があるため、次を使用して機密データを暗号化できます。 NCache データ暗号化機能 セキュリティリスクから保護します。 最後に、圧縮が有効になっている場合、暗号化されたデータは圧縮されます。 利用可能な帯域幅とメモリが不足しているため、 NCache データ圧縮機能 ネットワークトラフィックとメモリ消費を大幅に削減できます。 最終的に、書き込み操作はより高速に実行されます。
入手
主に、キャッシュはデータを取得する能力に基づいて効果的であると見なされます。 を使用してアイテムをキャッシュから取得できます。 Get
アイテムが保存されたキーを指定することによる操作。 指定したアイテムがキャッシュに存在しない場合は、例外なく null 値が返されます。
アイテムのバルクを取得します。 を使用して、キャッシュから複数のアイテムを同時に取得できます。
GetBulk
方法。 キャッシュで見つかった項目をキー値ディクショナリの形式で取得します。 指定されたキーのいずれかがキャッシュに存在しない場合、例外はスローされません。アイテムの存在を確認する: キャッシュは揮発性であるため、アイテムがキャッシュに存在するかどうかを知る必要がある場合があります。 アイテムの存在は、 NCache 提供
Contains
方法。 さらに、複数のアイテムの存在は、ContainsBulk
方法。データ ソースから取得: 高度なケースでは、データ ソースが構成されている場合、データがキャッシュに存在しない場合、データ ソースからデータがフェッチされます。 詳細については、次の章を参照してください。 データソースプロバイダー.
削除します
古いデータとキャッシュ ストレージを効率的に管理するには、データを明示的に削除する必要がある場合があります。 を使用してキャッシュからアイテムを簡単に削除できます。 Remove
方法。 指定したキーがキャッシュに存在しない場合は、null 値が返されます。 削除された項目を取得して、アプリケーションのニーズに基づいてさらに処理することもできます。 ただし、削除時にオブジェクトを取得するコストは避けられません。 したがって、削除時にアイテムが必要ない場合は、前のアプローチをお勧めします。
バルク アイテムを削除する: を使用して、アイテムのコレクションをキャッシュから同時に削除できます。
RemoveBulk
方法。 ディクショナリで正常に削除された項目を取得することもできます。 ただし、削除時に取得されるオブジェクトのサイズによっては遅くなる可能性があります。 したがって、削除されたアイテムを処理する必要がない場合は、アイテムを単純に削除する方が効率的であるため、アイテムを削除することをお勧めします。非同期でアイテムを削除します。 を使用して、キャッシュからアトミック データを非同期的に削除できます。
RemoveAsync
方法。 アイテムはバックグラウンドで削除され、操作が完了すると、ステータスが表示されます。 そのアイテムが正常に削除されたかどうかを確認したい場合は、提供された 非同期操作のステータスフラグ.データソースから削除: 高度なケースでは、データソースが構成されている場合、データの削除はデータソースだけでなくキャッシュでも行われます。 詳細については、この章を参照してください。 データソースプロバイダー.
Note
取消 Remove
& RemoveBulk
, RemoveAsync
削除されたオブジェクトをアプリケーションに返しません。
このセクションで
キャッシュにデータを追加する
データをキャッシュに追加する方法について説明します。
キャッシュ内の既存のデータを更新する
キャッシュに存在するデータを更新する方法について説明します。
キャッシュからデータを削除する
キャッシュからデータを削除する方法について説明します。
既存のキャッシュデータを取得する
キャッシュからデータを取得する方法について説明します。