キャッシュ内のJSONデータをクエリする
(以下の手順で詳しく説明したように) クエリ インデックスを使用するか、それに関連付けられた検索可能な属性を使用して、Json データをクエリできます。検索可能な属性には次のものが含まれます。
- タグ
- 名前付きタグ
- グループ
Note
この機能は以下でも利用できます NCache Professional.
キャッシュ内の JSON データをクエリするための前提条件
- すべてを使用するために必要な標準的な前提条件について学習するには NCache JSON データを含むクライアント側の機能については、次のページを参照してください。 クライアント側 API の前提条件.
- インデックスを使用してデータをクエリするには、「 管理者ガイド.
- インデックスを定義している場合は、作成時にインデックスを作成する JSON オブジェクトの型情報を指定する必要があります。
- APIの詳細については、以下を参照してください。 Iキャッシュ, キャッシュ項目, JsonValue, Jsonオブジェクト, グループ, タグ, 名前付きタグ, インセット, 属性の追加, 入手, クエリコマンド, 検索サービス, 実行リーダー, フィールド数, 名前付きタグ辞書.
ステップ 1: クエリ用の JSON データ インデックスの定義
インデックスを使用してデータをクエリするには、「 管理者ガイド NCache Management Center またはコマンド ライン ツール。型名またはクラスを指定する必要がある場所 (例: Alachisoft.NCache.Customer) と、後でクエリする属性 (例: CompanyName)。
ステップ 2: JSON インデックス クエリの型情報を指定する
クエリを実行するには、型名 (以前に定義したインデックスと同じ型名) を指定する必要があります。 JsonObject
このオブジェクトをキャッシュに追加するとき。 そうしないと、クエリを正常に実行できなくなります。 コード スニペットでこのタイプの情報を指定する方法については、「」セクションを参照してください。 型名を使用して JsonObject をキャッシュに追加する
手順 3: JSON クエリ インデックスを使用して JsonObject をクエリする
前の XNUMX つの手順を完了している場合は、以下のコード スニペットに示すように、必要な属性 (CompanyName など) に従って検索できます。 キャッシュから取得したオブジェクトの適切な逆シリアル化と検証を保証するには、型情報を追加する必要があります。
// Preconditions:
// (1) Cache is already connected
// (2) Cache is JSON Serialized
// Retrieve the CacheItem using the CompanyName with a query
string query = "SELECT * FROM Alachisoft.NCache.Customer WHERE $CompanyName$ = ?";
var queryCommand = new QueryCommand(query);
queryCommand.Parameters.Add("$CompanyName$", "CustomerItem");
var queryResult = cache.SearchService.ExecuteReader(queryCommand);
// QueryResult contains all the keys and metadata of result
if (queryResult.FieldCount > 0)
{
while (queryResult.Read())
{
// Perform operation according to your logic
}
}
else
{
// No data containing the given CompanyName exist
}
Note
操作がフェイルセーフであることを保証するために、で説明されているように、アプリケーション内の潜在的な例外を処理することをお勧めします。 失敗の処理.
グループ、タグ、または名前付きタグを使用して JsonObject をクエリする
あなたが追加することができます JsonObject
キャッシュに CacheItem
. CacheItem
によって提供されるカスタムクラスです NCache これは、キャッシュにデータを追加するために使用できます。 CacheItem を使用すると、さまざまなプロパティを追加できます。 ロッキング, 依存関係, タグ, 名前付きタグ, グループ.
警告
属性にオブジェクト自体への参照を含めることはできません。 そうすると、例外がスローされます。
次の例では、 CacheItem
でキャッシュに JsonObject
顧客 の値として CacheItem
。 タグがに追加されます CacheItem
次に、クエリコマンドを使用してタグを使用してアイテムがフェッチされます。
Customer customer = FetchCustomerFromDB(1001);
// Create a unique key for the object
string key = $"Customer:{customer.CustomerID}";
// Create a new JSON object and set attributes
// string values need to be added with JsonValue
var jsonCustomer = new JsonObject("Alachisoft.NCache.Customer");
jsonCustomer.AddAttribute("CustomerID", customer.CustomerID);
jsonCustomer.AddAttribute("ContactName", (JsonValue)customer.ContactName);
jsonCustomer.AddAttribute("CompanyName", (JsonValue)customer.CompanyName);
jsonCustomer.AddAttribute("Phone", customer.Phone);
jsonCustomer.AddAttribute("Address", customer.Address);
// Create a new CacheItem
var item = new CacheItem(jsonCustomer);
// Add Tag to the cacheItem
item.Tags = new Tag[] { new Tag("CustomerItem") };
// Add CacheItem in the cache with the value
cache.Insert(key, item);
// Retrieve the CacheItem using the tag with a query
string query = "SELECT * FROM Alachisoft.NCache.Customer WHERE $Tag$ = ?";
var queryCommand = new QueryCommand(query);
queryCommand.Parameters.Add("$Tag$", "CustomerItem");
var queryResult = cache.SearchService.ExecuteReader(queryCommand);
// QueryResult contains all the keys and metadata of result
if (queryResult.FieldCount > 0)
{
while (queryResult.Read())
{
// Perform operation according to your logic
}
}
else
{
// No data containing the named tag(s) exist
}
その他のリソース
NCache データをJSONとしてキャッシュするためのサンプルアプリケーションを提供します GitHubの.
も参照してください
。ネット: Alachisoft.NCache.ランタイム.JSON 名前空間
Java: comの。alachisoft.ncache.runtime.json 名前空間