일상생활을 하다 보면 우유팩이 냉장고에 오래 머물러 있다가 버리는 것을 잊은 경험이 있을 것입니다. 다음에 일어나는 일은 냉장고에 상한 우유가 있고, 공간을 차지하며, 아무 소용이 없고, 섭취할 경우에만 해로울 수 있다는 것입니다. 마찬가지로 캐시에 있는 데이터에도 만료 날짜가 있어야 합니다. 오랫동안 캐시에 보관된 모든 데이터는 (우유와 같이) 부실해지며 아무 쓸모가 없으며 캐시 공간만 차지합니다. 두 경우의 솔루션은 비슷합니다. 그것을 밖으로 던져!
이 블로그는 캐시의 데이터를 최신 상태로 유지하고 오래된 데이터를 버리는 만료 전략을 설명하는 것입니다.
캐시 데이터 만료: 필요성과 개념
전자 상거래 웹 사이트를 운영 중이고 이러한 제품의 정보를 캐시에 추가했다고 가정해 보겠습니다. 오랜 기간 동안 제품 정보는 변경되지 않고 캐시에 유지됩니다. 그런데 어떤 이유로 인해 일부 제품의 가격이 데이터 소스에서 업데이트되었습니다. 이 경우 고객이 실제로 오래된 캐시 데이터인 이전 가격을 계속 보고 있기 때문에 데이터 불일치가 발생합니다.
NCache 데이터에 시간 제한을 설정할 수 있는 만료를 제공하며 제한에 도달하면 데이터가 더 이상 유효하지 않습니다. 무효화된 데이터는 사전 정의된 후 캐시에서 제거해야 합니다. 청소 간격. 만료된 모든 항목이 캐시에서 자동으로 제거되는 간격(귀하가 설정)입니다. 따라서 만료된 항목은 캐시에서 즉시 제거되지 않습니다.
만료 유형 NCache
NCache 사용자의 요구 사항을 충족하기 위해 다음과 같은 전략을 제공합니다.
- 절대/기본 절대 만료
- 슬라이딩/기본 슬라이딩 만료
이러한 유형과 사용법을 자세히 살펴보겠습니다.
절대 만료
이 전략에서는 무효화해야 하는 항목과 함께 절대 시간을 지정합니다. 지정된 시간은 기기에 유지됩니다. 세계 협정시 시간 형식이므로 모든 영역에 지정된 시간은 캐시 서버에서 UTC 시간 형식으로 변환됩니다. 시간 범위는 몇 초에서 몇 시간에서 몇 일에서 몇 달, 시간이 경과하면 항목이 무효화되거나 만료됩니다. 명확성을 위해 그림 1을 보십시오.
사용 사례 : 항목을 캐시에 보관해야 하는 기간을 예측할 수 있는 경우. 예를 들어, 기간 한정 제품이 출시되어 24시간 후에 판매할 수 없는 경우 절대 만료 시간이 24시간인 항목이 추가되고 그 이후에는 제품이 캐시에서 만료됩니다.
5분 후에 만료되는 항목을 캐시에 추가하는 코드 예제를 살펴보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already connected // 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}"; // Create a new CacheItem for this product with expiry var cacheItem = new CacheItem(product); var expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(5)); cacheItem.Expiration = expiration; cache.Insert(key, cacheItem); |
슬라이딩 만료
이름에서 알 수 있듯이 이 전략은 데이터가 사용되는 동안 캐시에 데이터를 보관합니다. 따라서 특정 시간 동안 사용되지 않은 데이터는 무효화됩니다. 슬라이딩 만료로 추가된 데이터에 액세스할 때마다 해당 데이터가 캐시에 존재하는 기간이 연장됩니다. 예를 들어 슬라이딩 간격이 30초인 항목이 30초 동안 액세스되지 않으면 만료됩니다. 마찬가지로 30초 이내에 액세스하면 항목 수명이 캐시에서 30초 더 초과됩니다.
사용 사례 : 액세스할 사용자의 자격 증명을 사용하는 애플리케이션이 있다고 가정해 보겠습니다. 사용자가 활성 상태이고 애플리케이션을 사용하는 동안 사용자에게 액세스 권한을 제공하려고 합니다. 슬라이딩 만료는 활성 사용자를 추적하여 세션을 유지할 수 있는 경우에 도움이 됩니다.
아래 주어진 예에서 5분의 슬라이딩 만료가 제품에 추가됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 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}"; // Create a new CacheItem for this product with expiry var cacheItem = new CacheItem(product); var expiration = new Expiration(ExpirationType.Sliding, TimeSpan.FromMinutes(5)); cacheItem.Expiration = expiration; cache.Insert(key, cacheItem); |
기본 만료 전략
NCache 또한 수동으로 구성하는 수고를 덜 수 있도록 기본 만료를 추가할 수 있습니다. 다음을 사용해서만 구성할 수 있습니다. NCache 웹 관리자 또는 구성 파일(블로그의 뒷부분에 표시됨). 다음은 기본값입니다.
- 기본 절대
- 기본 슬라이딩
- 기본 절대 긴
- 더 긴 기본 슬라이딩
기본적으로 기본값은 모든 만기 전략에 대해 5초입니다. 참조하십시오 기본 만료 에서 철저히 설명 NCache 선적 서류 비치.
다음을 사용하여 만료 구성 NCache 웹 관리자
다음을 사용하여 만료를 활성화하고 기간을 설정할 수 있습니다. NCache 웹 관리자. 방법을 알려드리겠습니다.
구성 파일을 사용하여 만료 구성
다음에서 만료를 활성화할 수도 있습니다. NCache 구성 파일 사용(config.ncconf)에 설치되어 있는 NCache 기본적으로 설치 디렉토리. 아래의 태그, 있습니다 아래와 같이 태그를 지정합니다.
1 2 3 4 5 |
<expiration-policy enabled="True"> <absolute-expiration longer-enabled="False" longer-value="5" default-enabled="False" default-value="30"/> <sliding-expiration longer-enabled="False" longer-value="5" default-enabled="False" default-value="20"/> </expiration-policy> |
마찬가지로 아래와 같이 만료된 항목이 캐시에서 제거되는 정리 간격을 지정할 수 있습니다.
1 2 3 |
<cache-settings ... > <cleanup interval="15sec"/> </cache-settings> |
만료된 항목 대량 제거
캐시에서 만료된 모든 항목은 개별 항목 제거로 인한 성능 저하를 방지하기 위해 대량으로 제거됩니다. 그러나 제거할 항목의 대량 크기와 만료된 데이터의 두 연속 대량 제거 사이의 지연을 구성할 수 있습니다. NCache ~와 함께 Alachisoft.NCache.서비스.exe.config 설치 디렉토리에 있는 파일 NCache 다음과 같은 구성 가능한 태그가 있습니다.
1 2 |
<add key="NCacheServer.ExpirationBulkRemoveSize" value="10"/> <add key="NCacheServer.ExpirationBulkRemoveDelay" value="0"/> |
알아야 할 사실
- 만료(절대 또는 슬라이딩) 없이 캐시에 항목이 추가되면 수동으로 제거할 때까지 캐시에 영원히 남아 있습니다.
- 를 다시 시작해야 합니다. NCache 변경 사항을 적용하려면 구성 파일을 사용하여 무엇이든 구성한 후 서비스하십시오.
- In NCache, 만료는 다른 토폴로지와 관련하여 다르게 작동하며 모든 내용은 클러스터 환경에서의 만료.
요약하자면!
따라서 지금까지 논의한 모든 내용은 캐시의 오래된 데이터를 효율적으로 관리해야 하며 만료가 이를 수행하는 방법이라는 사실로 요약됩니다. 사용자가 제공한 기술을 기반으로 캐시에서 데이터를 만료시키는 기술입니다. NCache 번거 로움없이 이러한 것들을 처리하는 데 도움이됩니다.