다음 조건을 만족하는 경우 LocalCache 사용을 고려해 본다
- 데이터 요청이 잦다
- 데이터를 가져오는데 부하가 있다(디비, 웹요청 등)
- 데이터가 원본과 실시간 동기화되지 않아도 괜찮다(딜레이 허용)
// 이 객체의 값이 자주 필요한데 얻는 작업에 부하가 있으며, 실시간 동기화는 하지 않아도 된다고 하자.
class MyData : LocalCacheable
{
// ...
public override void SetMaxAgeSec()
{
// 캐시 수명 설정.
}
public override async Task UpdateSelf()
{
// 업데이트.
}
}
var CACHE_KEY = "mydata";
var localCache = new LocalCache();
var myData1 = await localCache.Get<MyData>(CACHE_KEY); // UpdateSelf() 하고 읽음.
var myData2 = await localCache.Get<MyData>(CACHE_KEY); // 캐시에서 읽음.
// 캐시 만료 가정.
var myData3 = await localCache.Get<MyData>(CACHE_KEY); // UpdateSelf() 하고 읽음.