でのJSONサポート NCache

NCache JSON サポート、解析およびデータ共有のための構造化された人間が判読可能な軽量構文を提供します。提供される主な容易さは、 NCache データをJSONとしてキャッシュすることで、キャッシュ内のカスタムクラスのデータをJSONとして取得できる柔軟性が得られます。 さらに、データをJSONとして追加し、カスタムクラスとして取得および解析することができます。

NCache 以下を通じて JSON をサポートします。

のJSONAPI NCache

NCache を使用すると、JSON 形式でキャッシュ データを追加および取得できます。 NCache JSONデータを効率的に挿入およびフェッチするための複数のJSON構造をサポートします。 これらの構造は次のとおりです。

  • JSONオブジェクト
  • JSON配列

これらの構造は両方とも、名前の抽象クラスから派生しています JsonValueBase。次の段落では、これらのクラスとその使用法について説明します。 NCache データを保存および取得します。

JSONオブジェクト

Jsonオブジェクト 表し JObject JSON標準で NCache ドメイン。 Jsonオブジェクト 順序付けされていない名前と値のペアを保持し、後でキャッシュ操作を実行するために使用される一意のキーに対してキャッシュに追加されます。キャッシュデータをJSONとして取得するには、 NCache 任意のカスタムクラスをとして取得できるようにします Jsonオブジェクト.

キャッシュにJsonObjectを追加する

あなたは挿入することができます Jsonオブジェクト 次の方法でキャッシュに移動します。 この例は、 Jsonオブジェクト シリアル化された文字列を使用してキャッシュに追加します。

var product = FetchProductFromDB("1001");
string jsonString = @$"{{ 
			""ProductID"" : ""{product.ProductID}"",
			""ProductName"" : ""{product.ProductName}"",
			""Category"" : ""{product.Category}"",
			""UnitsAvailable"" : ""{product.UnitsAvailable}""
			}}";
JsonObject jsonObject = new JsonObject(jsonString, "Alachisoft.NCache.Sample.Product");
string key = "Product:" + product.ProductID;

// Inserting object in cache
cache.Insert(key, jsonObject);
Product product = Product.fetchProductFromDB("Product:1001");
String jsonString = "{\"ProductID\":\"" + product.getProductID() + "\"," +
		    "\"ProductName\":\"" + product.getProductName() + "\"," +
		    "\"Category\":\"" + product.getCategory() + "\"," +
		    "\"UnitsAvailable\":" + product.getUnitsAvailable() +
		    "}";
JsonObject jsonObject = new JsonObject(jsonString, "com.alachisoft.ncache.sample.Product");
String key = "Product:" + product.getProductID();

// Inserting object in Cache
cache.insert(key, jsonObject);

キャッシュからJsonObjectを取得する

NCache キャッシュされたカスタムオブジェクトを次の形式で取得できます。 Jsonオブジェクト。 これにより、カスタムクラスのデータを含むJSON文字列が返されます。 NCache また、キャッシュすることができます Jsonオブジェクト 同じ Get API を使用してカスタム オブジェクトとして取得します。カスタム オブジェクトを JSON オブジェクトとして取得する方法の例を次に示します。

var jsonObject = cache.Get<JsonObject>(key);
var jsonObject = cache.get(key, JsonObject.class);

JSON配列

JsonArray in NCache の表現です Jアレイ JSON標準で。 JsonArray 値の順序付きリストです。 これらの値は、文字列、数値、ブール値、オブジェクト、または別の配列にすることができます。

キャッシュにJsonArrayを追加する

あなたが追加することができます Jsonオブジェクト または別の JsonArray JsonArray. NCache インデクサープロパティを使用して、 JsonArray。 あなたは作成することができます JsonArray 使用して Jsonオブジェクト 次のようにします。

var jsonArray = new JsonArray();
...                 
var jsonObject1 = new JsonObject(jsonString1 );
jsonArray.Add(jsonObject1);

var jsonObject2 = new JsonObject(jsonString2);
jsonArray.Add(jsonObject2);

string key = “JsonArrray:1001”;
cache.Insert(key, jsonArray);
var jsonArray = new JsonArray();
        //...
var jsonObject1 = new JsonObject(jsonString1, "com.alachisoft.ncache.sample.Product");
jsonArray.add(jsonObject1);
var jsonObject2 = new JsonObject(jsonString2, "com.alachisoft.ncache.sample.Product");
jsonArray.add(jsonObject2);

String key = "JsonArray:1001";

// Inserting JsonArray in Cache
cache.insert(key, jsonArray);

In NCache、JSONデータを指定されたインデックスに追加することもできます JsonArray。 指定されたインデックスにアイテムがすでに存在する場合、そのアイテムは上書きされます。 指定されたインデックスが存在しない場合、アイテムはそのインデックスに追加され、最後に入力されたインデックスと新しいインデックスの間のすべての値がに設定されます。 JsonNull (JSON標準ではnull)。

検索します JsonArray またはその特定のインデックス値

NCache 全体をフェッチすることができます JsonArray キャッシュから、または上の特定のインデックスから値を取得します JsonArray。 取得したら、それを列挙するか、データに対してインデックスベースの操作を実行できます。 これはあなたがフェッチする方法です JsonArray またはキャッシュからの特定の値:

// Retrieve JsonArray from cache
string key = "JsonArray:1001";
JsonArray jsonArray = cache.Get<JsonArray>(key)

// Retrieve the value of the specified index
JsonValueBase value = jsonArray[2];
// Retrieve JSONArray from cache
String key = "JsonArray:1001";
JsonArray jsonArray = cache.get(key, JsonArray.class);

// Retrieve the value of the specified index
JsonValueBase value = jsonArray.getItem(2);

JSON列挙子

NCache また、次の方法で JsonEnumerator をキャッシュ上に取得して、すべての JSON オブジェクトと JSON 配列をフェッチすることもできます。

var enumerator = (IDictionaryEnumerator)_cache.GetJsonEnumerator();
while (enumerator.MoveNext())
{
	DictionaryEntry entry = (DictionaryEntry)enumerator.Current;
	JsonValueBase valueBase = (JsonValueBase)entry.Value;
	//...
}
var enumerator = cache.asJsonIterator();
while (enumerator.hasNext())
{
	Entry entry = (Entry) enumerator.next();
	JsonValueBase valueBase =  (JsonValueBase) entry.getValue();
	//...
 }

NCache JSONでサポートされる機能

NCache は機能豊富な分散キャッシュであり、データの保存と取得を容易にする多くの機能を提供します。 ネイティブオブジェクトやカスタムオブジェクトの場合と同様に、 NCache JSON タイプのデータに対するそのような機能もサポートしています。

キャッシュ内のJSONデータにインデックスを付ける

NCache JSON データのタイプに基づいてインデックスを付けることができます。

Product product = FetchProductFromDB();
string jsonString = @$"{{ ""ProductID"" : ""{product.ProductID}"", ""ProductName"" : ""{product.ProductName}"", ""Price"" : {product.Price} }}";

JsonObject jsonObject = new JsonObject(jsonString, "Alachisoft.NCache.Sample.Product");
string key = "Product:" + product.ProductID;

cache.Insert(key, jsonObject);
Product product = Product.fetchProductFromDB("Product:1001");

String jsonString = "{\"productID\":\"" + product.getProductID() + "\", \"productName\" : \""+ product.getProductName() + "\", \"price\":\"" + product.getPrice() + "\"}";

JsonObject jsonObject = new JsonObject(jsonString,"com.alachisoft.ncache.sample.Product" );
String key = "Product:" +product.getProductID();
cache.insert(key, jsonObject);

キャッシュ内のJSONデータをクエリする

JSON データのタイプに基づいてインデックスを作成したら、SQL のようなクエリを実行して、キャッシュからデータをフェッチまたは削除できます。 JSON データのクエリ中にこれらすべての検索可能な属性を使用する方法の詳細については、次のドキュメントを参照してください。 JSONデータのクエリ.

string query = "Select * FROM Alachisoft.NCache.Runtime.JSON.JsonObject WHERE Discount = ?";
QueryCommand queryCommand = new QueryCommand(query);queryCommand.Parameters.Add("Discount", 0.5);

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
}
String query = "Select * FROM Alachisoft.NCache.Runtime.JSON.JsonObject WHERE Discount = ?";
QueryCommand queryCommand = new QueryCommand(query);
queryCommand.getParameters().put("Discount", 0.5);

var queryResult = cache.getSearchService().executeReader(queryCommand);
if (queryResult.getFieldCount() > 0) {
      while (queryResult.read()) {
      // Perform operation according to your logic
      }
}
else {
            // No data
        }

JSONデータをデータベースと同期する

キャッシュにデータを保存する場合、 NCache を使用すると、作業しているデータが古くなっていないことを確認できます。これを確実にするために、 NCache キャッシュとデータベースの同期を維持する次の機能を提供しています。

  • キャッシュの依存関係: NCache は、データベース内でデータが更新された場合にキャッシュからデータを削除する、JSON データに対するキャッシュの依存関係をサポートします。詳しくはこちら キャッシュ データの依存関係 データベースについてはドキュメントから参照してください。
  • 有効期限: JSON データに時間ベースの有効期限を追加して、キャッシュをデータベースと同期させることができます。詳細については、次のドキュメントを参照してください。 キャッシュ内のデータ有効期限戦略.
  • イベント: NCache 登録された操作が JSON シリアル化キャッシュまたは JSON データに対して実行されたときにトリガーされるイベント通知を提供します。詳細については、次のドキュメントを参照してください。 キャッシュ内のイベント通知.
  • データソースプロバイダー: NCache JSON データをマスター データ ソースに永続化できるようにし、キャッシュ内にデータが見つからない場合はソースから直接データをフェッチします。に関するドキュメントを参照してください。 キャッシュ用のデータソースプロバイダー これらのプロバイダーの詳細なヘルプを取得します。
  • キャッシュ起動ローダー: キャッシュ起動ローダーを使用してキャッシュを開始すると、JSON データをキャッシュに自動的に追加できます。詳細については、次のドキュメントを参照してください。 キャッシュスタートアップローダー.

.NETおよびJavaオブジェクトのJSONシリアル化

JSONシリアル化では、オブジェクトはシリアル化されると同等のJSONに変換され、逆シリアル化時にカスタムオブジェクトに変換されます。

NCache .NET オブジェクトと Java オブジェクトの両方に対する JSON シリアル化サポートを提供します。

  • .NET クライアントから JSON シリアル化キャッシュにカスタム オブジェクトを保存し、Java クライアントを通じてデータをフェッチできます。 Jsonオブジェクト.
  • Java クライアントから JSON シリアル化キャッシュにカスタム オブジェクトを保存し、.NET クライアント経由でカスタム オブジェクトを取得できます。 Jsonオブジェクト.
  • また、.NET クライアントから非 JSON シリアル化キャッシュに JSON オブジェクトを保存し、Java クライアント経由でそれを取得することもできます。 Jsonオブジェクト およびその逆。

.NET に次の Product 属性があるとします。以下に示すように、このオブジェクトをカスタム オブジェクトとしてキャッシュに保存できます。

Product product = new Product();
product.Name = "Pizza";
product.Expiry = new DateTime(2020, 3, 28);
product.Sizes = new string[] { "Large", "Medium" };
Product product = new Product();
product.setName("Pizza");
product.setExpiry(new Date(2020, 3, 28));
product.setSizes(new String[] { "Large", "Medium" });

または、JSONシリアル化を使用してこのデータをシリアル化します。 JSONシリアル化を選択すると、このデータは次のJSON文字列にシリアル化されます。

{
   "Name": "Pizza",
   "Expiry": "2020-3-28T00:00:00",
   "Sizes": ["Large", "Medium"]
}

JSON シリアル化はメモリ効率が高く、移植性があり、実装するためにコードを変更する必要がなく完全に自動化されています。 NCache また、シリアル化する属性とそのままにする属性を指定することもできます。

次はどうする?

レビュー NCache 特徴
ダウンロード NCache
パーソナライズされたLIVEデモをリクエストする

お問い合わせ(英語)

電話
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。