2013-04-09 1 views
1

Я хочу начать использовать распределенное кэширование Azure и натолкнулся на концепцию LocalCache. Но тот факт, что он может выйти из синхронизации с распределенным кэшем, заставляет меня задаться вопросом, почему я хотел бы использовать его и как я мог бы использовать его безопасно.Когда использовать кеш-кеширование локального кэша

Когда включено, элементы, извлеченные из кластера кеша, локально сохраняются в памяти на клиентской машине. Это улучшает производительность последующих запросов на получение, но это может привести к несогласованности данных между локально кэшированной версией и фактическим элементом кластера кэша.

Вызов DataCache.GetIfNewer является одним из способов гарантировать, что я получаю последнюю версию, но для этого требуется, чтобы я все еще выполнял вызов распределенного кэша, передавая объект, который я хочу проверить, чтобы узнать, две версии отличаются.

Я мог использовать Уведомления, чтобы аннулировать объект LocalCache, но это делается на основе опроса, что открывает возможность обновления в течение периода опроса, оставляя мне устаревшие данные.

Итак, почему я должен использовать LocalCache, и если есть причина для этого, как его безопасно использовать?

ответ

3

«Есть только два жестких вещей в области компьютерных наук: кэш недействительности и называющие вещи» - Фил Karlton

Вы могли бы использовать LocalCache, когда а) исполнение имеет решающее значение б) вы не заботитесь, что извлеченный объект может быть устаревшим.

Существует много случаев, когда объект никогда не будет устаревшим (например, список публичных/банковских праздников) или когда вы не слишком обеспокоены тем, что на 100% обновлен (например, если элемент имеет > 1000 единиц на складе, используйте локальный кеш, в противном случае повторно извлекайте из базы данных).

Не пытайтесь сделать недействительным локальный кэш. Если вам нужны более современные объекты, получите их из кластера. Если вы не можете терпеть данные из синхронизации, получите их из базы данных. Кэширование всегда является компрометацией производительности - LocalCache больше, чем кеш сервера, но кеш сервера по-прежнему является компромиссом.

+0

Спасибо Саймон, примеры помогают прояснить ситуацию. Я буду помнить их, глядя на мою стратегию кэширования. – sunil

 Смежные вопросы

  • Нет связанных вопросов^_^