캐시 패턴과 만료
캐시 우선 패턴을 적용하고 만료를 설정합니다.
캐시 패턴과 만료은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
캐싱 패턴
캐시를 읽고 쓰는 방식이 바로 패턴입니다. 웹 앱에서 가장 일반적인 방식은 캐시 우회이며, 코드가 데이터 원본을 중심으로 캐시를 관리합니다.
캐시 우회 패턴
캐시 우회(지연 로딩)는 세 단계로 작동합니다. 캐시를 확인하고, 캐시가 누락되면 원본에서 데이터를 읽어 캐시에 채운 다음 값을 반환합니다. 캐시는 요청이 있을 때 채워집니다.
async Task<string> GetForecastAsync(string city)
{
string key = $"forecast:{city}";
string cached = await _cache.GetStringAsync(key);
if (cached is not null) return cached;
string fresh = await _api.LoadForecastAsync(city);
await _cache.SetStringAsync(key, fresh);
return fresh;
}만료가 필수적인 이유
캐시된 데이터는 오래되어 최신이 아닐 수 있습니다. 만료는 일정 시간이 지나면 항목을 자동으로 제거하므로 다음 읽기에서 최신 데이터를 다시 로드하게 합니다. 이렇게 성능과 데이터의 오래됨 사이에서 균형을 맞춥니다.
절대 만료
절대 만료는 사용 여부와 관계없이 정해진 시점에 항목을 제거합니다. 데이터가 알려진 특정 기간 동안만 유효할 때 사용합니다.
var options = new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
};슬라이딩 만료
슬라이딩 만료는 접근할 때마다 타이머를 초기화합니다. 항목이 정기적으로 사용되는 동안에는 유지되지만 일정 시간 동안 사용되지 않으면 제거됩니다. 세션과 유사한 데이터에 적합합니다.
var options = new DistributedCacheEntryOptions
{
SlidingExpiration = TimeSpan.FromMinutes(5)
};두 만료 방식 함께 사용하기
두 방식을 모두 설정할 수 있습니다. 슬라이딩 만료는 자주 사용되는 데이터를 유지하고, 절대 만료 상한은 항목이 최대 기간보다 오래 유지되지 않도록 보장하여 결국 새로 고치게 합니다.
var options = new DistributedCacheEntryOptions
{
SlidingExpiration = TimeSpan.FromMinutes(5),
AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1)
};Set에서 옵션 적용하기
항목이 자체 만료 정책을 갖도록 옵션을 SetStringAsync 또는 SetAsync의 세 번째 인수로 전달합니다.
await _cache.SetStringAsync(key, fresh, options);쓰기 반영과 무효화
원본 데이터가 변경되면 캐시를 제거하거나 업데이트하여 읽기 작업에서 오래된 값을 제공하지 않도록 합니다. 캐시 우회 방식에서는 일반적으로 영향을 받은 키에 RemoveAsync를 함께 사용합니다.
await _repository.UpdateForecastAsync(city, value);
await _cache.RemoveAsync($"forecast:{city}");캐시 쇄도 방지
인기 있는 키가 만료되면 많은 요청이 동시에 해당 키를 다시 로드할 수 있습니다. 이를 캐시 쇄도라고 합니다. 짧은 잠금, 약간 무작위화한 만료 시간 또는 백그라운드 새로 고침을 사용하여 한 요청만 항목을 다시 만들도록 완화할 수 있습니다.
만료 값 선택하기
데이터가 얼마나 자주 변경되는지와 어느 정도의 오래됨을 허용할 수 있는지를 기준으로 기간을 정합니다. 기준 데이터에는 긴 TTL도 괜찮지만, 빠르게 변경되는 데이터에는 짧은 TTL이나 이벤트 기반 무효화가 필요합니다.
캐시 누락의 비용
캐시가 누락될 때마다 원본을 로드하는 비용이 발생하므로 적중률을 최대화하도록 키와 TTL을 설계합니다. 적중률과 누락률을 모니터링하여 시간에 따라 캐시를 조정하시기 바랍니다.
빠른 확인
캐싱 패턴과 만료를 테스트합니다.
요약
캐시 우회 패턴은 캐시를 확인하고, 캐시가 누락되면 데이터를 로드한 뒤 캐시에 채웁니다. 절대 만료는 고정된 시점에 항목을 제거하고, 슬라이딩 만료는 접근할 때마다 초기화됩니다. DistributedCacheEntryOptions를 사용하여 두 방식을 함께 적용할 수 있습니다. 쓰기 작업에서는 RemoveAsync로 무효화하고, 캐시 쇄도를 방지하며, 접근 패턴과 허용 가능한 데이터의 오래됨을 기준으로 TTL과 키를 조정하시기 바랍니다.
자주 묻는 질문
“캐시 패턴과 만료” 강의는 무료인가요?
네 — “캐시 패턴과 만료” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“캐시 패턴과 만료”에서 뭘 배우나요?
캐시 우선 패턴을 적용하고 만료를 설정합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C# Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“캐시 패턴과 만료” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.