JSON 지원 NCache

NCache 구문 분석 및 데이터 공유를 위한 체계적이고 사람이 읽을 수 있는 경량 구문인 JSON 지원을 제공합니다. 제공되는 주요 용이성 NCache Cache Data as JSON을 통해 캐시에 있는 모든 사용자 지정 클래스의 데이터를 JSON으로 검색할 수 있는 유연성을 얻을 수 있습니다. 또한 데이터를 JSON으로 추가하고 사용자 지정 클래스로 검색 및 구문 분석할 수 있습니다.

NCache 다음을 통해 JSON을 지원합니다.

JSON API NCache

NCache JSON 형식으로 캐시 데이터를 추가하고 검색할 수 있습니다. NCache JSON 데이터를 효율적으로 삽입하고 가져오기 위해 여러 JSON 구조를 지원합니다. 이러한 구조는 다음과 같습니다.

  • JSON 객체
  • JSON 배열

이 두 구조는 이름으로 추상 클래스에서 파생됩니다. JsonValueBase. 다음 단락에서는 이러한 클래스와 사용법을 설명합니다. NCache 데이터를 저장하고 검색합니다.

JSON 객체

JsonObject 대표 JObject JSON 표준에서 NCache 도메인입니다. JsonObject 순서가 지정되지 않은 이름-값 쌍을 보유하며 나중에 캐시 작업을 수행하는 데 사용되는 고유 키에 대해 캐시에 추가됩니다. 캐시 데이터를 JSON으로 검색하려면, NCache 모든 사용자 정의 클래스를 JsonObject.

캐시에 JsonObject 추가

당신은 삽입 할 수 있습니다 JsonObject 다음과 같은 방법으로 캐시에 저장합니다. 이 예는 JsonObject 직렬화된 문자열을 사용하여 캐시에 추가합니다.

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 의 형태로 캐시된 사용자 정의 개체를 검색할 수 있습니다. JsonObject. 이렇게 하면 사용자 정의 클래스의 데이터가 포함된 JSON 문자열이 반환됩니다. NCache 또한 캐시할 수 있습니다. JsonObject 동일한 Get API를 사용하여 사용자 정의 개체로 가져옵니다. 다음은 사용자 정의 개체를 JSON 개체로 검색하는 방법의 예입니다.

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

JSON 배열

JsonArray in NCache 의 대표이다 JArray JSON 표준에서. JsonArray 정렬된 값 목록입니다. 이러한 값은 문자열, 숫자, 부울, 개체 또는 다른 배열일 수 있습니다.

캐시에 JsonArray 추가

당신은 추가 할 수 있습니다 JsonObject 또는 다른 JsonArrayJsonArray. NCache indexer 속성을 사용하여 JsonArray. 당신은 만들 수 있습니다 JsonArray 를 사용하여 JsonObject 다음과 같은 방법으로

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 클라이언트를 통해 데이터를 가져올 수 있습니다. JsonObject.
  • Java 클라이언트의 JSON 직렬 캐시에 사용자 정의 개체를 저장하고 .NET 클라이언트를 통해 검색할 수 있습니다. JsonObject.
  • .NET 클라이언트에서 JSON이 아닌 직렬화된 캐시에 JSON 객체를 저장하고 Java 클라이언트를 통해 이를 검색할 수도 있습니다. JsonObject 그 반대.

.NET에 다음과 같은 제품 특성이 있다고 가정해 보겠습니다. 아래와 같이 이 개체를 사용자 정의 개체로 캐시에 저장할 수 있습니다.

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
맞춤형 라이브 데모 요청
© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.