NCache 우리가 지금 알고 있듯이, 더 나은 성능과 고성능 및 확장성을 달성하기 위해 캐시에 데이터를 저장합니다. 우리는 보았다 NCache 애플리케이션의 성능 향상을 위해 데이터에 빠르게 액세스하는 것은 놀라운 일이지만, 우리는 여전히 어떤 종류의 데이터가 NCache 캐시에 저장합니다. 데이터베이스와 마찬가지로 NCache 간단한 단계에 따라 데이터를 추가할 수 있으며 데이터 추가와 관련하여 매우 유연하며 거의 모든 종류의 응용 프로그램 요구 사항을 충족하는 많은 데이터 유형을 제공합니다. 이 블로그는 모든 형식에 관한 것입니다. NCache 당신에게 최대한의 용이함을 제공하여 캐시 저장소에 데이터를 저장합니다.
키-값 쌍
스타터를 들어, NCache 는 다음을 명확하게 명시하는 키-값 저장소입니다. NCache 해당 값에 대한 키가 있도록 데이터를 저장합니다. ㅏ 키 문자열 기반 식별자이며 다음 속성 목록이 있습니다.
- 키는 고유해야 하며 다음에서 허용하는 키의 중복이 없습니다. NCache.
- 키는 null일 수 없습니다.
- 키는 대소문자를 구분합니다.
A 가치 캐시에 저장된 개체의 값입니다. 지원되는 모든 유형은 나중에 블로그에서 살펴보겠습니다. 이것은 키가 저장된 값에 대한 식별 속성으로 사용되는 키-값 쌍을 설명합니다. 그림 1은 데이터가 캐시에 추가되고 저장되는 방법을 보여줍니다.
지원되는 데이터 유형 NCache
NCache 객체 형태의 데이터를 지원합니다. 이러한 개체는 다음 형식 중 하나일 수 있습니다.
- 기본 유형
- 사용자 정의 클래스 개체
- 데이터 구조
- JSON 데이터
캐시 키 및 데이터 개요 캐시에 데이터 추가 NCache 동적 클러스터링
기본 데이터 유형
NCache 모든 .NET 기본 데이터 유형을 지원합니다. 키에 대한 값으로 문자열을 추가할 수 있습니다. 다음은 에서 지원하는 유형입니다. NCache:
바이트/바이트 | 짧게/짧게 | 대상 | 현 | 더블 | 불량배 | 시간 범위 |
정수/단위 | 롱/울롱 | 이륜 전차 | 뜨다 | 소수 | 날짜 시간 |
캐시의 키에 대한 문자열 추가를 보여주는 간단한 코드 예제를 빠르게 살펴보겠습니다.
1 2 3 4 5 6 7 8 |
// Specify the customer name as string string customerName = "John Wick"; // Generate a unique cache key string key = "Customer"; // Add the string to cache cache.Add(key, customerName); |
사용자 정의 클래스 개체
사용자 정의 클래스 개체는 .NET 또는 Java 클래스 개체(예: 제품 또는 주문 또는 고객 등)를 나타냅니다. 사용자 정의 클래스 개체 추가 귀하의 캐시에 데이터를 표시하는 것입니다 직렬화 가능. 다음 중 하나를 통해 캐시의 클래스를 직렬화할 수 있습니다.
- 사용자 지정 클래스에 .NET 직렬화 가능 특성 추가 또는
- 사용 동적 컴팩트 직렬화 에서 제공하는 프레임워크입니다. NCache 등록된 클래스에 대한 비용 효율적인 직렬화를 동적으로 제공합니다.
그러나 직렬화되지 않은 데이터는 캐시에 추가할 수 없습니다. 을보세요 직렬화 캐시 데이터 직렬화에 대한 자세한 내용은 섹션을 참조하십시오.
아래 코드의 캐시에 사용자 지정 클래스 개체를 추가해 보겠습니다. 캐시 마크에 데이터를 추가하기 전에 다음과 같이 직렬화되었습니다.
1 2 3 4 5 6 7 8 |
[Serializable] public class Product { public int ProductID { get; set; } public string ProductName { get; set; } public string Category { get; set; } public int Price { get; set; } } |
1 2 3 4 5 6 7 8 |
// Get product from database against given product ID Product product = FetchProductFromDB(1001); // Generate a unique cache key for this product string key = $"Product:{product.ProductID}"; // Add Product object to cache CacheItemVersion version = cache.Add(key, product); |
데이터 구조
NCache 자연에 분포하는 것은 다음의 기능을 제공합니다. 기존 데이터 구조 데이터 일관성에 영향을 미치지 않으면서 데이터를 추가, 제거 및 검색할 수 있습니다. 다음은 에서 지원하는 데이터 구조입니다. NCache:
- 배포 목록: IList 인터페이스의 기본 .NET 구현입니다. 예를 들어 전자 상거래 플랫폼에서 고객은 다음을 사용하여 항목을 추가/제거할 수 있습니다. 배포 목록.
1 |
IDistributedList list = cache.DataTypeManager.CreateList(key, dataTypeAttributes); |
- 분산 대기열: 분산 대기열로 알려진 항목에 대한 FIFO(선입 선출) 구현입니다. 예를 들어, 위협적인 트윗을 걸러내기 위해 정보 기관에서 수행한 감정 분석은 다음을 사용할 수 있습니다. 분산 큐 트윗을 저장합니다.
1 |
IDistributedQueue queue = cache.DataTypeManager.CreateQueue(key); |
- 분산 해시 집합: 집합의 값이 고유하고 구별되는 정렬되지 않은 데이터 유형 구현입니다. 예를 들어 온라인 서점이 있다면 해시 세트 어떤 사용자가 어떤 책에 관심이 있는지 또는 몇 권의 책을 구입했는지 식별하는 데 도움이 될 수 있습니다.
1 |
IDistributedHashSet userSetMonday = cache.DataTypeManager.CreateHashSet(mondayUsersIds); |
- 분산 사전: IDictionary 인터페이스의 기본 .NET 구현인 키-값 쌍입니다. 값은 특정 키에 대해 유지됩니다. 예를 들어 로그인 자격 증명(예: 사용자 이름 및 암호)을 형식으로 저장할 수 있습니다. 분산 사전 분산 캐시 환경에서
1 |
IDistributedDictionary<string, Product> dictionary = cache.DataTypeManager.CreateDictionary<string, Product>(key); |
- 분산 카운터: 값을 쉽게 증가 또는 감소시키는 데 사용되는 데이터 구조입니다. 예를 들어, 웹 페이지가 시간당 또는 하루에 얻는 조회수를 유지하려면 다음을 사용하여 쉽게 구현할 수 있습니다. 분산 카운터.
1 |
ICounter counter = cache.DataTypeManager.CreateCounter(key, initialValue); |
분산 목록을 사용하는 방법에 대한 아이디어를 얻으려면 아래 코드를 보십시오. NCache 캐시에 제품 목록이 추가되는 위치:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Specify unique cache key for list string key = "ProductList"; // Create list of Product type in cache IDistributedList list = cache.DataTypeManager .CreateList(key); // Get products to add to list Product[] products = FetchProducts(); foreach (var product in products) { // Add products to list list.Add(product); } |
JSON 데이터 NCache
JSON은 매우 빠르고 모든 주요 JavaScript 프레임워크에서 지원하기 위해 애플리케이션에서 사용하는 읽기 쉬운 언어입니다. NCache 다음을 수행 할 수 있습니다 JSON 데이터 추가 기본 클래스 JsonValueBase에서 파생된 몇 가지 클래스를 제공하여 캐시 저장소에서 쉽게 사용할 수 있습니다. 에서 제공하는 클래스를 살펴보자. NCache:
- JSON객체: 이 수업 name은 객체의 이름이고 value는 모든 기본 유형이 될 수 있는 JSON 객체의 값인 정렬되지 않은 이름-값 쌍을 위한 것입니다.
- 제이슨값: 이 수업 문자열, 정수 또는 DateTime과 같은 JSON 규칙의 기본 데이터 유형을 나타냅니다.
- JSON 배열: 이 수업 항목 모음을 나타내고 다음에서 JArray를 나타냅니다. NCache의 도메인입니다.
- JsonNull: 이 클래스는 JSON 표준에서 NULL 값을 나타냅니다.
아래 코드는 JSON의 사용법을 보여줍니다. NCache 코드 예제와 함께. 코드 예제는 문자열로 구성되고 캐시에 삽입된 JsonObject를 보여줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 |
var product = GetProductFromDB(); string jsonString = $@"{{ 'ProductID': { product.ProductID}, 'ProductName': '{product.ProductName}', 'Category': '{product.Category}', 'UnitsAvailable' : { product.UnitsAvailable} }}"; JsonObject jsonObject = new JsonObject(jsonString); cache.Insert(key, jsonObject); // Fetch the jsonObject previously added var jsonObject = cache.Get(key); |
JSON 지원 NCache 분산 데이터 구조 캐시에 데이터 추가
위치 선호도
의 추가 기능 NCache 향상된 성능을 제공하기 위해 위치 선호도. 애플리케이션에 대해 더 높은 성능과 더 나은 결과를 얻으려면 NCache 동일한 노드에 두 개의 다른 클래스의 데이터를 유지하는 제어를 제공합니다. 이렇게 하면 서로 다른 클래스에 속한 서로 다른 항목 간에 친화도가 생성되므로 해당 항목을 가져오는 동안 일치 비용이 절약됩니다. 유사한 중괄호 {}를 사용하여 선호도가 있는 항목을 추가하기만 하면 동일한 노드에 항목이 존재하게 됩니다. 예를 들어 Order_{Product:1001}"은 제품 키 1001을 사용하여 제품 개체에 속하는 주문 간의 연관성을 보여줍니다.
코드 예제를 보여 드리겠습니다. 제품 와 주문 위치 선호도를 사용하여 동일한 노드에 추가됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Product product = FetchProductFromDB(1001); string productKey = "Product:1001"; var productCacheItem = new CacheItem(product); // Add CacheItem to cache CacheItemVersion version = cache.Add(key, productCacheItem); Order order = FetchOrderFromDB(17); // Unique order key for this order using Location Affinity syntax // This will create an affinity for this orderKey with the respective productKey string orderKey = "Order_{Product:1001}"; var orderCacheItem = new CacheItem(order); // Add order with Location Affinity to cache CacheItemVersion version = cache.Add(key, orderCacheItem); |
결론
결론적으로, NCache 응용 프로그램의 요구 사항을 수용하는 캐시에 데이터를 추가하는 유연한 방법을 제공합니다. 캐시에 데이터를 추가하기 위해 간단한 API를 사용하기만 하면 됩니다. 에 대한 가장 좋은 점 NCache 새로운 버전이 나올 때마다 새로운 기능의 지원으로 데이터 추가가 더 쉽고 더 효율적이라는 것입니다. 의 다른 멋진 기능을 확인할 수 있습니다. NCache 여기에서 지금 확인해 보세요..