캐시의 데이터 구조 동작 및 사용
NCache 기본 유형, 사용자 정의 객체, 값이 될 수 있는 값에 대해 키가 문자열 유형인 키-값 쌍 구조를 지원합니다. 캐시 아이템, 또는 데이터 구조. 그룹, 태그, 만료, 잠금, 종속성, 그리고 더 많은 값을 이러한 값에 할당할 수 있습니다.
주의 사항
이 기능은 NCache Enterprise.
그러나 데이터 구조 내에서 값을 업데이트하려면 목록이 필요하며 캐시에서 값을 가져와 업데이트한 다음 다시 캐시에 추가해야 합니다. 이로 인해 네트워크를 통한 추가 호출이 발생했습니다. NCache 는 이제 서버에서 직접 데이터를 조작하여 데이터 구조를 추가/업데이트하기 위한 독점적 지원을 제공함으로써 이 제한을 제거했습니다. 따라서 전반적인 성능을 향상시킵니다.
NCache 다음 데이터 구조에 대한 명시적 지원을 제공합니다.
- 명부
- 열
- 해시셋
- 사전
- 계수기
기본 데이터 구조 인터페이스에서 제공하는 기능 외에도 NCache 다음을 사용하여 메타데이터를 지정하는 옵션을 제공하여 기능을 확장합니다. CacheItem
. 이는 데이터 구조가 캐시의 다른 개체와 마찬가지로 태그, 만료 및 종속성을 가질 수 있음을 의미합니다.
중대한
전체 데이터 구조는 클러스터 캐시의 한 노드에 상주합니다. 예를 들어, 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
데이터를 새로 고치는 데 사용됩니다. 자세한 내용은 캐시 로더 및 리프레셔.
클라이언트 캐시
데이터 구조는 클라이언트 캐시에 저장되지 않습니다. 어느 돈을 받아가세요 작업은 기본 캐시에서 가져오지만 클라이언트 캐시에는 저장하지 않습니다. 자세한 내용은 클라이언트 캐시. 예를 들어 사전을 잠그면 전체 사전이 잠기고 더 이상 작업이 수행되지 않습니다.
잠금
XNUMXD덴탈의 NCache 다른 병렬 클라이언트에 의해 업데이트되는 캐시 저장소 내의 데이터 동기화 및 무결성을 위한 효율적인 잠금 메커니즘을 제공합니다. NCache의 내부 잠금은 동일한 데이터 구조에 대한 모든 업데이트에 대해 전체 캐시 클러스터에서 데이터 구조의 일관성을 보장합니다. 예를 들어, 전체 사전 사전을 잠그면 잠깁니다.
이벤트 알림
캐시 수준 이벤트와 키 기반 이벤트는 데이터 구조 수준 이벤트와 함께 지원되며 데이터 구조에 함께 등록될 수 있습니다. 예를 들어:
캐시에 목록이 생성됩니다. 이는
ItemAdded
데이터 구조 이벤트가 아니라 캐시 수준 이벤트입니다.이 목록에 항목이 추가됩니다. 이것은 트리거
ItemUpdated
목록이 업데이트되면서 캐시 레벨 이벤트가ItemAdded
새로운 항목으로 데이터 구조 이벤트가 목록에 추가되었습니다.
제한 사항
- 중첩된 데이터 구조는 아직 지원되지 않습니다.
- XNUMXD덴탈의
CacheItem
데이터 구조 내에 저장할 수 없습니다. 예를 들어,CacheItems
아직 지원되지 않습니다. - HashSet의 사용자 정의 개체는 아직 지원되지 않습니다.
- 사전 키는 문자열 유형만 될 수 있습니다.
토폴로지 현명한 동작
미러 토폴로지
럭셔리 미러 토폴로지, 작업은 활성 노드에서 수행됩니다. 그런 다음 이러한 작업이 수동 노드에 복제됩니다.
복제된 토폴로지
럭셔리 복제된 토폴로지, 클라이언트가 연결된 노드에서 작업이 수행되고, 그런 다음 모든 노드에 작업이 복제됩니다.
분할된 토폴로지
In 분할된 토폴로지, 전체 데이터 구조가 동일한 노드에 존재합니다. 키를 기준으로 배포됩니다. 이것은 사전이 아무리 크더라도 하나의 노드에 존재한다는 것을 의미합니다. 사전 자체는 노드 간에 분할되지 않습니다.
파티션-복제본 토폴로지
In 파티션-복제본 토폴로지, 작업은 분할된 토폴로지에서와 동일하게 동작합니다. 데이터 구조는 캐시 키를 기반으로 분산되며 동일한 노드에 상주합니다. 해당 복제본은 다른 노드에 존재합니다.
도 참조
캐시의 동작 및 사용 나열
캐시의 대기열 동작 및 사용량
캐시에서 동작 및 사용 설정
캐시의 사전 동작 및 사용
캐시의 카운터 동작 및 사용