CRUD 작업: 개요
NCache 데이터를 키-값 쌍으로 저장합니다. 즉, 고유 식별자(키)가 데이터(값)에 대해 저장됩니다. 키-값 데이터베이스와 유사하게 NCache 또한 CRUD 작업을 통해 데이터를 저장, 검색 및 관리합니다. 이와 관련하여, NCache 동기식 또는 비동기식으로 원자 또는 대량 데이터를 캐싱하기 위한 다양한 CRUD API 세트를 제공합니다. 여기에서는 다음과 같은 개요를 제공합니다. NCache-지원되는 기본 CRUD 작업: 추가, 삽입, 돈을 받아가세요및 제거.
계속 진행하기 전에 캐시에 무엇을 저장할지 알아야 합니다. 기존의 문자열 기반 값 외에도 NCache 추가 허용 기본 데이터 유형, 사용자 정의 개체, 메타데이터가 포함된 데이터(캐시 아이템), 데이터 구조및 JSON 데이터.
캐시에 추가된 모든 객체는 직렬화 가능해야 합니다. NCache 상점 형식에 따라 바이너리 및 JSON 직렬화를 처리합니다. 네이티브 바이너리 직렬화를 수행할 수 없는 경우 NCache 또한 자체 제공 컴팩트 직렬화 프레임워크. JSON 저장소의 경우 NCache 제공된 개체의 직렬화를 처리합니다. 또는 추가할 수 있습니다. NCache 제공된 JSON 직렬화 객체, 플랫폼 간 및 다국어 애플리케이션을 지원할 수 있습니다.
작업 유형
NCache 단일 또는 대량 항목에 대한 CRUD 작업을 허용합니다. 한편 지원되는 작동 모드는 동기 및 비동기입니다. 여기에서는 작동 유형 및 모드에 대해 간략하게 설명합니다. NCache.
원자적 작업
주의 사항
이 기능은 다음에서도 사용할 수 있습니다. NCache Professional.
단일 키-값 쌍에 대해 수행되는 모든 작업을 원자적 작업으로 분류합니다. 따라서 이러한 작업에는 단일 캐시 호출이 필요합니다. 원자의 행동 추가, 삽입, 제거및 얻을 작업은 이후 섹션에서 설명합니다.
대량 작업
주의 사항
이 기능은 다음에서도 사용할 수 있습니다. NCache Professional.
대량 작업을 사용하면 단일 캐시 호출을 통해 여러 항목에 대한 CRUD 작업을 수행할 수 있습니다. 대량 작업은 단일 작업으로 실행되지만 작업 실패는 개별적으로 처리됩니다. 그들은 성능을 향상시키기 위해 특별히 설계되었습니다. 예를 들어 단일 대량 작업에서 100개의 캐시 항목을 검색하는 것은 100개의 원자 호출을 통해 검색하는 것보다 훨씬 빠르게 수행됩니다. 이러한 방식으로 원격 서버에 대한 네트워크 이동이 줄어들어 성능이 향상됩니다.
대량 작업은 애플리케이션 시작 시 캐시된 데이터를 대량으로 가져오거나 쿼리 결과를 대량으로 캐시에 삽입하는 데 특히 유용합니다.
동기 작업
주의 사항
이 기능은 다음에서도 사용할 수 있습니다. NCache Professional.
NCache 원자 항목 또는 대량 항목을 동시에 추가할 수 있습니다. 동기 작업은 차단 호출로 발생하므로 클라이언트는 추가 작업을 실행하기 위해 서버의 응답을 기다려야 합니다. 작업이 수행되면 컨트롤이 애플리케이션으로 돌아갑니다.
클라이언트는 작업 완료를 기다려야 하지만 동기화 작업을 통해 컨트롤이 사용자에게 반환될 때 작업의 성공/실패 상태를 반환할 수 있습니다. 이러한 작업은 캐시와의 연결 실패 또는 내부 시스템 오류로 인해 실패할 수 있습니다. 이 프로세스는 장애 시나리오가 발생하는 즉시 처리할 수 있는 제어 기능을 애플리케이션에 제공합니다. 따라서 이러한 작업은 중요한 데이터를 처리할 때 필수적입니다.
또한 동기 작업은 순차적입니다. 이는 작업이 서로 종속되어 있는 경우 유용합니다. 예를 들어, 전자 상거래 사이트에서는 2시간 동안만 반짝 세일 항목을 동기적으로 추가하고 나중에 반짝 세일 항목을 검색합니다. 판매 중인 캐시된 항목을 가져오는 동안 해당 항목이 캐시에 먼저 성공적으로 추가되었는지 확인하면 실패를 피할 수 있습니다. 달리 명시되지 않는 한 기본 CRUD 작업은 기본적으로 동기식입니다.
비동기 작업
비동기 작업은 백그라운드에서 발생하므로 클라이언트는 추가 작업을 실행하기 위해 서버의 응답을 기다릴 필요가 없습니다. 캐시에서 수행할 작업 목록은 클라이언트 측의 대기열에서 유지 관리되며 전용 백그라운드 스레드가 서버 측으로 계속 보냅니다. 컨트롤은 작업이 대기열에 들어간 직후 애플리케이션으로 돌아갑니다. 이렇게 하면 응용 프로그램의 전반적인 응답성이 향상됩니다.
응답 시간이 애플리케이션에 중요하고 작업 실패가 애플리케이션 작동을 방해하지 않는 경우 비동기 작업이 유용할 수 있습니다.
비동기 작업은 작업 자체의 실패 또는 성공에 대해 알리지 않으므로 NCache 의 객체를 반환 작업 클래스 작업 상태를 가져오는 데 추가로 사용할 수 있습니다. 이와 관련하여 수행된 작업의 성공 또는 실패를 나타내기 위해 Task 클래스에서 다음과 같은 상태 플래그를 제공합니다.
- 완성 됐습니다: 지정된 작업이 캐시에서 성공적으로 발생하는지 여부를 알립니다.
- 결함 있음: 지정된 작업이 발생했지만 실패하면 알립니다.
- 취소됨: 내부 사유로 인해 지정된 작업이 취소되었는지 알립니다.
분산 캐시의 기본 CRUD
일단 캐시와 상호 작용할 수 있습니다. 캐시 인스턴스 가져오기. 다음에서 지원하는 기본 CRUD 작업의 작동 및 동작을 살펴보겠습니다. NCache.
추가/삽입
다음을 사용하여 항목을 캐시에 추가할 수 있습니다. 추가 or 끼워 넣다 방법. 그러나 두 작업 모두 동작이 다릅니다. Add
제공된 키가 캐시에 존재하지 않는 경우에만 특정 키를 사용하여 캐시에 항목을 성공적으로 추가하고 그렇지 않으면 예외를 발생시킵니다. 한 번에 여러 클라이언트가 캐시에 항목을 추가하는 것을 금지하고 싶다고 가정해 보겠습니다. 그런 다음 다음을 사용할 수 있습니다. Add
클라이언트가 이미 캐시에 있는 항목을 추가하려고 하면 작업 실패를 알리는 메서드입니다.
반면에, 미국에서 체류를 연장하고자 이전의 승인을 갱신하려던 Insert
업데이트 작업으로도 작동합니다. 를 사용하여 항목을 추가하면 Insert
방법이고 지정된 키가 이미 캐시에 있는 경우 캐시의 기존 항목이 대체됩니다. 항목을 추가하는 것 외에도 캐시의 항목을 안전하게 업데이트합니다.
가장 간단한 경우는 키와 값을 지정하여 캐시에 항목을 직접 추가하거나 삽입하는 것입니다. 그러나 이러한 메서드에는 고급 옵션을 사용하여 항목을 캐시에 추가/삽입할 수 있는 몇 가지 오버로드가 있습니다. 추가/삽입의 관련 사용 사례 및 동작은 아래에서 설명합니다.
- 대량의 데이터 추가: 다음을 사용하여 동시에 데이터 모음을 캐시에 추가할 수 있습니다.
AddBulk
/InsertBulk
방법.AddBulk
기존 키로 항목 추가 실패 알림을 구체적으로 요청하는 경우 사용할 수 있습니다. 이와 관련하여 실패한 작업은 예외로 해당 키를 지정하는 사전을 응용 프로그램에 반환하여 개별적으로 강조 표시됩니다. 예를 들어 대량의 100개 항목이 캐시에 추가되고 그 중 20개가 이미 캐시에 있는 경우 나머지 80개 항목이 캐시에 추가됩니다. 기존 20개 항목은 실패한 작업의 사전으로 애플리케이션에 반환됩니다.
기존 항목을 업데이트하기 위해 여러 항목을 추가하는 동안 실패를 방지하려면 다음을 사용할 수 있습니다. InsertBulk
방법. 캐시의 기존 항목을 덮어쓰고 어떤 이유로든 추가/업데이트에 실패한 키 사전을 반환합니다.
비동기식으로 데이터 추가: 클라이언트 애플리케이션의 효율성을 향상시키려는 경우 항목을 캐시에 비동기적으로 추가/삽입할 수 있습니다.
AddAsync
/InsertAsync
메서드는 백그라운드에서 항목을 추가하고 작업이 완료되면 Task 개체를 반환합니다. 클라이언트는 다음에 언급된 상태 플래그를 확인할 수 있습니다. 비동기 작업 추가 코드 없이 추가/삽입 작업의 성공 또는 실패를 확인합니다.종속 항목이 있는 데이터 추가: 종속성이 있는 캐시에 항목을 추가/삽입할 수 있습니다. 캐시 데이터는 일시적이므로 특정 데이터는 사용자별 기준에 따라 캐시에서 제거해야 할 수 있습니다. 그 경우, NCache 항목을 추가/삽입하는 동안 종속성을 설정할 수 있도록 하여 캐시된 데이터를 무효화하는 다양한 방법을 제공합니다. 특히 다음을 기반으로 종속성을 설정할 수 있습니다. 시간, 캐시 데이터, 데이터베이스및 외부 소스를 사용하여 애플리케이션 요구 사항에 따라 특정 항목을 무효화하고 결국 제거할 수 있습니다.
동시 쓰기: 다음을 사용하여 항목을 캐시에 삽입할 수 있습니다. 잠금 다중 스레드 또는 다중 클라이언트 응용 프로그램의 경우 동시 액세스를 제어합니다. 동시 업데이트 작업이 캐시에서 수행될 때 데이터 무결성을 유지하는 데 도움이 됩니다. 항목을 독점적으로 잠그거나 캐시에 추가된 항목 버전에서 작업할 수 있습니다. 항목 버전은 캐시의 모든 항목에 대해 캐시에 의해 유지 관리되며 업데이트 작업이 수행될 때마다 자동 증가됩니다.
데이터 소스에 쓰기: 고급 사례에서 데이터 소스가 구성된 경우 추가/삽입 작업 중에 데이터 소스뿐만 아니라 캐시에도 데이터가 추가/업데이트됩니다.
요청 실행 흐름: 추가/삽입 작업이 발생하면 기본 요청 실행 프로세스는 직렬화, 암호화 및 압축 단계를 따릅니다. 먼저, 제공된 데이터가 직렬화됩니다. 그런 다음 암호화가 구성된 경우 클라이언트 측에서 암호화됩니다. 네트워크를 통해 이동하는 데이터는 쉽게 가로챌 수 있으므로 다음을 사용하여 중요한 데이터를 암호화할 수 있습니다. NCache 데이터 암호화 기능 보안 위험으로부터 보호합니다. 마지막으로 압축이 활성화된 경우 암호화된 데이터가 압축됩니다. 사용 가능한 대역폭과 메모리가 부족하기 때문에 NCache 데이터 압축 기능 네트워크 트래픽과 메모리 소비를 크게 줄일 수 있습니다. 결과적으로 쓰기 작업이 더 빠르게 수행됩니다.
돈을 받아가세요
기본적으로 캐시는 데이터 검색 능력에 따라 효과적인 것으로 간주됩니다. 다음을 사용하여 캐시에서 항목을 검색할 수 있습니다. Get
항목이 저장된 키를 지정하여 작업을 수행합니다. 지정한 항목이 캐시에 없으면 null 값이 예외 없이 반환됩니다.
대량 항목 가져오기: 캐시에서 여러 항목을 동시에 검색할 수 있습니다.
GetBulk
방법. 키-값 사전 형식으로 캐시에서 찾은 항목을 검색합니다. 지정된 키가 캐시에 존재하지 않는 경우 예외가 발생하지 않습니다.아이템 존재 확인: 캐시는 휘발성이므로 캐시에 항목이 존재하는지 여부를 알아야 할 수도 있습니다. 항목의 존재 여부는 다음을 사용하여 확인할 수 있습니다. NCache 제공
Contains
방법. 또한 여러 항목의 존재 여부는 다음을 통해 확인할 수 있습니다.ContainsBulk
방법.데이터 소스에서 가져오기: 고급 사례에서 데이터 소스가 구성된 경우 데이터가 캐시에 없으면 데이터 소스에서 데이터를 가져옵니다. 자세한 내용은 장을 참조하십시오. 데이터 소스 공급자.
제거
부실 데이터 및 캐시 스토리지를 효율적으로 관리하려면 데이터를 명시적으로 제거해야 할 수 있습니다. 다음을 사용하여 캐시에서 항목을 쉽게 제거할 수 있습니다. Remove
방법. 지정된 키가 캐시에 없으면 null 값이 반환됩니다. 또한 애플리케이션 요구 사항에 따라 추가 처리를 위해 제거된 항목을 얻을 수도 있습니다. 그러나 제거 시 개체를 가져오는 데 드는 비용은 불가피합니다. 따라서 제거할 항목이 필요하지 않은 경우에는 사전 접근 방식을 권장합니다.
대량 항목 제거: 캐시에서 항목 모음을 동시에 제거할 수 있습니다.
RemoveBulk
방법. 성공적으로 제거된 항목을 사전에서 검색할 수도 있습니다. 그러나 제거 시 검색되는 개체의 크기에 따라 속도가 느려질 수 있습니다. 따라서 제거된 항목을 처리할 필요가 없을 때 더 효율적이므로 단순히 항목을 제거하는 것이 좋습니다.항목을 비동기적으로 제거합니다. 다음을 사용하여 비동기적으로 캐시에서 원자 데이터를 제거할 수 있습니다.
RemoveAsync
방법. 항목은 백그라운드에서 제거되며 작업이 완료되면 상태를 받게 됩니다. 해당 항목이 성공적으로 제거되었는지 여부를 확인하려는 경우 제공된 비동기 작업에 대한 상태 플래그.데이터 소스에서 제거: 고급 사례에서 데이터 원본이 구성되어 있으면 데이터 원본뿐만 아니라 캐시에서도 데이터 제거가 발생합니다. 자세한 내용은 장을 참조하십시오. 데이터 소스 공급자.
주의 사항
같지 않은 Remove
과 RemoveBulk
, RemoveAsync
제거된 개체를 응용 프로그램에 반환하지 않습니다.
이 섹션의
캐시에 데이터 추가
캐시에 데이터를 추가하는 방법을 설명합니다.
캐시의 기존 데이터 업데이트
캐시에 존재하는 데이터를 업데이트하는 방법을 설명합니다.
캐시에서 데이터 제거
캐시에서 데이터를 제거하는 방법을 설명합니다.
기존 캐시 데이터 검색
캐시에서 데이터를 검색하는 방법을 설명합니다.