내 DataCache에서 두 개의 인덱스를 사용하여 개체를 캐시해야합니다. 여러 인덱스를 사용하는 ASP.NET 캐싱
내가이 같은 캐시 말 :Campaign campaign = //get campaign from db
HttpContext.Current.Cache.Add(
"Campaigns.Id."+campaign.Id.ToString(),
campaign,
null,
System.Web.Caching.Cache.NoAbsoluteExpiration,
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Normal,
null);
HttpContext.Current.Cache.Insert("Campaigns.Code."+campaign.Code,
campaign,
null,
System.Web.Caching.Cache.NoAbsoluteExpiration,
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Normal,
null);
내가 ID 또는 코드 "인덱스"를 사용하여 캐시에 액세스하려고합니다. 발견되지 않으면 위와 같이 캠페인을 검색하고 색인을 생성합니다.
이 방법으로 문제가 발생할 수 있습니까?
ASP는 인덱스 중 하나만 제거하도록 결정할 수 있습니다. 해당 인덱스를 통해 캐시에 액세스하면 항목을 가져오고 다시 색인을 다시 생성합니다.
UPDATE :
내 주요 질문은 내가 캐시에 저장되어있는 같은 객체에 불과 참조 객체를 두 번 저장하거나 경우에 지불 할 필요 여부?
감사 입력합니다. 경쟁 조건을 피하기 위해 lock 문을 사용하고 있는데, 한 인덱스를 제거하고 다른 인덱스를 제거하지 않으면 큰 문제는 아닙니다. 내 주요 관심사는 두 번 객체를 저장하는 데 비용을 지불해야하는지 아니면 두 개의 색인 만 객체를 참조하는지 여부입니다. –
@Niels 두 캐시 항목이 ** 같은 ** 개체 그래프 (위의 경쟁 조건 참조)를 가리키는 한, ** 하나의 ** 개체 만 유지합니다. 캐시 자체는 _reference_ 만 저장합니다. – Mark
고마워요. 내가 찾던 고마워요. –