В моем DataCache мне нужно кэшировать объект, используя два индекса.
Скажите, что я кеширую вот так:
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 или Code "index". Если не найдено, кампания извлекается и индексируется, как показано выше.
Может ли этот метод привести к каким-либо проблемам?
ASP может решить удалить только один из индексов. Если я получу доступ к кешу через этот индекс, он снова получит элемент и переиндексирует оба, и это нормально.
UPDATE:
Мой главный вопрос заключается в том, должен ли я платить за хранение объекта два раза или это просто ссылка на тот же объект, который хранится в кэше?