캐시의 데이터 구조 동작 및 사용
NCache 네트워크를 통해 전체 컬렉션을 가져오지 않고도 추가, 삭제 및 업데이트와 같은 서버 측 직접 작업을 지원하는 분산 데이터 구조를 제공합니다. 이러한 데이터 구조는 다음을 지원합니다. NCache 태그, 만료, 잠금, 종속성 및 이벤트 알림과 같은 기능을 제공합니다. 따라서 고성능 분산 애플리케이션에서 순차 처리, 고유 컬렉션, 키-값 맵 및 원자적 카운터에 이상적입니다.
NCache 키는 문자열이고 값은 기본 데이터 유형, 사용자 정의 객체 등이 될 수 있는 키-값 쌍 저장 방식을 지원합니다. 캐시 아이템또는 분산 데이터 구조. 메타데이터 및 무효화 속성(예: ...) 그룹, 태그, 만료, 잠금예산 및 종속성 이러한 값에 할당하여 캐싱 동작 및 데이터 수명 주기를 제어할 수 있습니다.
기존 캐싱 방식은 데이터 구조를 가져와 로컬에서 수정하고 다시 캐시에 추가하는 과정을 필요로 하는 반면, NCache 분산 데이터 구조를 서버 측에서 직접 조작할 수 있도록 합니다. 이를 통해 불필요한 네트워크 호출을 제거하고 애플리케이션 성능과 확장성을 크게 향상시킬 수 있습니다.
NCache 다음 데이터 구조에 대한 명시적 지원을 제공합니다.
- 명부
- 열
- 해시셋
- 사전
- 계수기
기본 데이터 구조 인터페이스에서 제공하는 연산 외에도, NCache 데이터 구조를 생성할 때 메타데이터 및 무효화 속성을 지정할 수 있습니다. 이를 통해 분산 데이터 구조에서 태그, 만료 및 종속성과 같은 기능을 지원할 수 있습니다.
중대한
전체 데이터 구조는 클러스터 캐시의 한 노드에 상주합니다. 예를 들어, 100개 항목의 사전을 생성하면 100개 항목의 전체 사전이 하나의 노드에 존재하며 다른 노드에 배포되지 않습니다.
다음 그림은 3개 노드의 클러스터 캐시에 있는 각 캐시 키에 대한 다양한 데이터 구조를 보여줍니다.
기능 현명한 동작
스토리지
데이터 구조 내에 저장된 모든 항목은 다음과 같은 서버의 기본 작업을 지원하도록 JSON 직렬화됩니다.
Contains.데이터 구조에는 캐시 크기에 영향을 미치는 메타데이터와 함께 자체 크기가 있습니다.
PrimaryField 주석
[기본 필드] 어노테이션은 리스트와 큐를 포함한 데이터 구조의 사용자 모델 클래스에서 사용할 수 있습니다. 데이터 구조에 대한 검색 작업(예: ...) Contains, 전체 개체를 직렬화하여 서버로 전송하는 대신 해당 속성/속성만 직렬화하여 보내는 데 사용할 수 있습니다. 오직 PrimaryField 속성은 서버로 전송되어 서버 측에서 비교되므로 작업 비용이 절감됩니다.
예를 들어, Customer 클래스에는 속성이 포함되어 있습니다. CustomerId, 독특합니다. 이것은 다음과 같이 표시될 수 있습니다. PrimaryField, 그리고 완전한 객체를 비교하는 대신에 Contains, 비교만 PrimaryField 작업을 완료할 수 있습니다.
class Customer
{
[PrimaryField]
public string CustomerId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
캐시 키
의 데이터 구조 NCache 즉, 다른 개체와 마찬가지로 캐시 키에 대해 저장됩니다. NCache. 에 대한 캐시 키가 있는 경우 CacheItem, 데이터 구조에 대해 사용할 수 없습니다.
검색 가능한 기능
그룹, 태그 및 명명된 태그와 같은 검색 가능한 속성은 생성하는 동안 데이터 구조에 대해 지정할 수 있습니다. ㅏ CacheItem 데이터 구조는 동일한 그룹/태그/명명된 태그에 속할 수 있습니다. 자세한 내용은 검색 가능한 속성 구성.
데이터 무효화 기능
축출
전체 데이터 구조가 "제거 예정" 범주에 속하는 경우 캐시에서 제거됩니다. 데이터 구조 생성으로 인해 제거가 발생할 수 있을 뿐만 아니라 데이터 구조에 대한 모든 쓰기 작업도 제거를 트리거할 수 있습니다. 예를 들어, 제거 기준이 충족되도록 항목이 목록에 추가됩니다.
만료
데이터 구조는 지정된 시간 간격이 지나면 캐시에서 무효화될 수 있습니다. CacheItem데이터 구조는 두 가지 모두를 지원합니다. 절대 만료 슬라이딩 만료.
캐시 종속성
데이터 구조는 모든 캐시 종속성을 지원합니다. 키 기반 종속성의 경우 목록은 CacheItem 그리고 그 반대의 경우도 마찬가지입니다. 더 자세한 내용은 다음을 참조하십시오. 무효화 속성 구성.
데이터 구조 쿼리
데이터 구조가 있는 경우 캐시에서 쿼리할 수 있습니다. 검색 가능한 속성 구성되었습니다. 검색 가능한 속성은 다음과 같습니다.
- 그룹 [사용중지됨]
- 태그
- 명명된 태그
자세한 내용은 데이터 구조에 대한 쿼리.
백업 소스 제공자
전체 읽기
이는 컬렉션 수준에만 해당됩니다. 데이터 구조가 캐시에 없으면 데이터 소스에서 직접 읽을 수 있습니다. 데이터 구조의 개별 항목은 데이터 소스에서 읽혀지지 않습니다. 따라서 데이터 소스에서 전체 항목 목록을 가져와야 합니다.
연속 기입
연속 기입은 다음 두 가지 경우에 트리거됩니다.
- 캐시 내부에서 데이터 구조 생성 시(컬렉션 수준)
- 이미 존재하는 데이터 구조(항목 수준)에 데이터를 추가할 때.
캐시 로더 및 리프레셔
캐시 시작 로더 기능을 사용하면 캐시 시작 시 데이터 구조를 캐시에 자동으로 로드할 수 있습니다. 이를 위해서는 인터페이스 구현이 필요합니다. ICacheLoader 그 방법으로. 또한, 데이터에 변경이나 업데이트가 있는 경우, Cache Refresher 데이터를 새로 고치는 데 사용됩니다. 자세한 내용은 캐시 로더 및 리프레셔.
클라이언트 캐시
데이터 구조는 클라이언트 캐시에 저장되지 않습니다. 어느 돈을 받아가세요 작업은 기본 캐시에서 가져오지만 클라이언트 캐시에는 저장하지 않습니다. 자세한 내용은 클라이언트 캐시.
잠금
NCache 이 기능은 여러 클라이언트가 동시에 캐시 저장소를 업데이트할 때 데이터 동기화 및 무결성을 위한 잠금 메커니즘을 제공합니다. NCache내부 잠금 기능은 동일한 데이터 구조에 대한 모든 업데이트에 대해 전체 캐시 클러스터에서 데이터 구조의 일관성을 보장합니다. 예를 들어, 전체 사전 사전 잠금이 획득되면 잠금 상태가 됩니다.
이벤트 알림
캐시 수준 이벤트와 키 기반 이벤트는 데이터 구조 수준 이벤트와 함께 지원되며 데이터 구조에 함께 등록될 수 있습니다. 예를 들어:
캐시에 목록이 생성됩니다. 이는
ItemAdded데이터 구조 이벤트가 아니라 캐시 수준 이벤트입니다.이 목록에 항목이 추가됩니다. 이것은 트리거
ItemUpdated목록이 업데이트되면서 캐시 레벨 이벤트가ItemAdded새로운 항목으로 데이터 구조 이벤트가 목록에 추가되었습니다.
제한 사항
- 중첩된 데이터 구조는 아직 지원되지 않습니다.
- The
CacheItem데이터 구조 내에 저장할 수 없습니다. 예를 들어,CacheItems아직 지원되지 않습니다. - HashSet의 사용자 정의 개체는 아직 지원되지 않습니다.
- 사전 키는 문자열 유형만 될 수 있습니다.
토폴로지 현명한 동작
복제된 토폴로지
럭셔리 복제된 토폴로지, 클라이언트가 연결된 노드에서 작업이 수행되고, 그런 다음 모든 노드에 작업이 복제됩니다.
분할된 토폴로지
In 분할된 토폴로지, 전체 데이터 구조가 동일한 노드에 존재합니다. 키를 기준으로 배포됩니다. 이것은 사전이 아무리 크더라도 하나의 노드에 존재한다는 것을 의미합니다. 사전 자체는 노드 간에 분할되지 않습니다.
파티션-복제본 토폴로지
In 파티션-복제본 토폴로지, 작업은 분할된 토폴로지에서와 동일하게 동작합니다. 데이터 구조는 캐시 키를 기반으로 분산되며 동일한 노드에 상주합니다. 해당 복제본은 다른 노드에 존재합니다.
도 참조
캐시의 동작 및 사용 나열
캐시의 대기열 동작 및 사용량
캐시에서 동작 및 사용 설정
캐시의 사전 동작 및 사용
캐시의 카운터 동작 및 사용