"640KB는 누구에게나 충분해야 합니다"라는 속담이 널리 받아들여지곤 했습니다. 누가 그 말을 했는지에 대해서는 의견이 분분하지만 이제 컴퓨팅에서 "충분하다"는 것이 무엇을 의미하는지 아무도 알 수 없다는 보편적인 동의가 있습니다.
이 때문에 보유할 수 있는 데이터 양을 추정하여 캐시를 설정할 때 일부 캐시된 데이터를 삭제하거나 제거해야 합니다. 없이 축출, 캐시가 가득 차면 캐시에서 데이터가 제거되지 않기 때문에 들어오는 데이터 추가 요청이 허용되지 않습니다.
그림 1 간단한 그림으로 설명합니다.
제거를 활성화하면 캐시가 다른 캐시 항목과 비교한 사용량 또는 우선 순위에 따라 데이터를 제거한다는 의미입니다. 이렇게 하면 우선 순위가 더 높거나 낮은 항목이 캐시에서 제거되면 캐시에 추가할 수 있는 수신 데이터를 위한 공간이 확보됩니다. 그림 2 명확성을 위해 이를 설명합니다.
방법에 대해 논의할 것입니다. NCache 다양한 제거 정책을 지원하고 처리하며 캐시에서 활성화하는 방법.
NCache 세부 정보 퇴거 구성 – NCache 기술 문서 NCache 클라이언트 API 문서
퇴거 정책 NCache
NCache 모든 사용 사례를 수용할 수 있도록 다양한 제거 기능을 제공합니다.
가장 최근에 사용된(LRU)
가장 일반적으로 사용되는 퇴거 정책 중 하나는 LRU. 이 제거 정책을 사용하면 캐시가 최근에 액세스한 항목과 비교하여 오랫동안 사용하지 않은 가장 오래된 캐시 항목을 제거할 수 있습니다. 데이터는 마지막 액세스 시간을 기준으로 제거됩니다. 액세스 시간은 캐시에서 가져오거나 업데이트될 때 각 캐시 항목에 대한 타임스탬프로 업데이트됩니다.
캐시에 고객이 보고 있는 제품에 대한 데이터가 포함되어 있다고 가정해 보겠습니다. 캐시가 가득 차면 한동안 보지 않은 제품을 제거하는 것이 좋습니다.
가장 적게 사용됨(LFU)
이 제거 정책은 자주 사용되지 않는 캐시 항목을 제거합니다. ~ 안에 LFU 데이터는 사용 빈도/항목에 대한 적중 횟수에 따라 제거됩니다. 예를 들어 어떤 항목에 5번 접근했다면 20번 접근한 항목보다 퇴거 대상으로 더 적합하다. 이는 고객이 인기 상품을 보고 있고 캐시를 제거해야 하는 시나리오에 유용합니다. 핫셀링 아이템만큼 접근하지 않은 아이템을 퇴거시켜도 사용자 경험에 영향을 미치지 않습니다.
우선 순위 기반 퇴거
우선 퇴거 먼저 캐시에서 덜 중요한 데이터를 제거합니다. 캐시 데이터의 우선 순위를 지정할 수 있는 경우 데이터 제거 방법을 더 잘 제어하기 위해 이 제거 정책을 채택해야 합니다. 우선 순위는 캐시 항목을 캐시에 추가하는 동안 지정됩니다. 다음 우선 순위 수준에서 우선 순위를 지정할 수 있습니다.
- 낮은
- 정상 아래
- 표준
- 보통 이상
- 높은
- Not Removable – 이 우선 순위 수준은 캐시 항목이 제거되지 않아야 하며 다음을 통해서만 구성할 수 있음을 지정합니다. NCache API.
다음은 각 항목을 캐시에 추가하는 동안 각 항목의 우선 순위를 쉽게 지정하는 방법입니다.
1 2 3 4 5 6 7 8 9 |
Product product = FetchProductFromDB(1001); string key = $"Product:{product.ProductID}"; CacheItem cacheItem = new CacheItem(product) { Priority = CacheItemPriority.High }; cache.Add(key, cacheItem); |
NCache 세부 정보 퇴거 구성 – NCache 기술 문서 NCache 클라이언트 API 문서
퇴거 항목 대량 제거
제거하는 동안 항목을 개별적으로 제거해도 성능이 영향을 받지 않도록 항목이 대량으로 제거됩니다. NCache 요구 사항에 따라 두 번의 연속 대량 제거 사이의 지연과 대량 크기를 쉽게 사용자 지정할 수 있습니다.
. Alachisoft.NCache.서비스.exe.config 에있는 파일을 %NCHOME%/빈/서비스, 다음 태그를 통해 이러한 설정을 구성할 수 있습니다. 자세한 내용은 에 대한 설명서를 참조하십시오. 제거 설정 구성.
퇴거를 위한 벌크 크기
한 번의 대량 호출에서 제거할 항목 수를 지정할 수 있습니다.
1 |
<add key="NCacheServer.EvictionBulkRemoveSize" value="1000"/> |
퇴거 대량 제거 지연
여기에 표시된 것처럼 제거 제거 호출 사이의 지연(초)을 지정할 수 있습니다. 값이 XNUMX이면 제거가 지연되지 않고 항목이 계속 제거됩니다.
1 |
<add key="NCacheServer.EvictionBulkRemoveDelay" value="5"/> |
웹 관리자를 통해 제거 활성화
일련의 몇 가지 간단한 단계를 통해 제거를 활성화할 수 있습니다. 제거를 활성화하면 제거 비율(제거할 총 캐시 크기의 백분율)을 사용자 지정하고 정책 및 우선 순위를 지정할 수 있습니다.
구성 파일을 통해 제거 활성화
캐시 구성 파일(config.ncconf). 아래의 <cache-settings>
태그, 다음 추가 <eviction-policy>
태그 :
1 2 3 |
<cache-settings ...> <eviction-policy enabled="True" default-priority="normal" policy="priority" eviction-ratio="5%"/> </cache-settings> |
NCache 세부 정보 퇴거 구성 – NCache 기술 문서 판 비교
클러스터 환경에서 제거
- 제거가 활성화되면 다음에서 제거를 지능적으로 처리합니다. NCache 각 캐시 토폴로지에서:
- 분할/복제본 캐시 분할: In 파티션 된 와 복제본 파티션 각 노드에는 데이터 파티션이 있으므로 각 노드는 자체 데이터를 제거해야 합니다. partition-of-replica의 레플리카 노드의 경우 데이터가 활성 노드에서 제거되면 자동으로 제거됩니다.
- 복제된 캐시: In 복제 토폴로지에서 모든 노드는 동일한 데이터 집합을 가지므로 클러스터 조정자만 제거를 담당합니다.
- 미러 캐시: In 거울 캐시에서 활성 노드는 전체 캐시에서 제거를 수행할 책임이 있습니다.
결론
중단 없이 캐시에 캐시 작업을 적용하려면 캐시가 최신 데이터를 유지하고 원치 않는 데이터를 제거하는지 확인해야 합니다. 이것은 퇴거가 작용하는 곳입니다. 제거 구성은 간단하며 나머지는 다음에서 처리합니다. NCache 자체.