Экспорт (0) Печать
Развернуть все

Срок действия и вытеснение (кэш на основе ролей для Кэша Azure)

Обновлено: Июль 2010 г.

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

Срок действия кэша позволяет кластеру кэша автоматически удалять кэшированные объекты из кэша. При использовании методов Put или Add для помещаемого в кэш объекта можно задать необязательное значение тайм-аута, которое определяет срок его хранения в кэше. Если значение тайм-аута объекта не было указано в момент помещения объекта в кэш, для кэшированного объекта будет установлен срок действия по умолчанию. Это значение по умолчанию зависит от того, используется ли кэширование для ролей или Shared Caching.

Если используется кэширование на основе ролей, доступно три параметра срока действия.

 

Тип срока действия Описание

действие отсутствует.

Срок действия отключен. Элементы остаются в кэше, пока не будут вытеснены, или пока кластер кэша не будет перезапущен.

Абсолютный

Срок действия элементов истекает через заданный период времени с момента их создания.

Скользящий

Срок действия элементов истекает через заданный период времени с момента последнего обращения к ним. При каждом обращении к объекту скользящее временное окно сбрасывается. Это позволяет дольше хранить в кэше часто используемые элементы.

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

В Shared Caching всегда используется абсолютный срок действия и настроить срок действия по умолчанию нельзя. Срок действия элементов в Shared Caching истекает через 48 часов. Тем не менее, с помощью методов Put и Add можно явно задать сроки действия в коде. Обратите внимание, что поставщики ASP.NET автоматически используют их для явного задания времени действия состояний сеансов и кэша вывода. В обоих случаях при превышении размера Shared Caching для вашей подписки из него вытесняются элементы, не использовавшиеся дольше всего.

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

Для предотвращения немедленного удаления объектов с истекшим сроком действия при их разблокировании метод Unlock также поддерживает продление срока действия кэшированных объектов.

Есть два дополнительных способа сделать локальный кэш недействительным: на основе тайм-аута и на основе уведомлений.

TipСовет
После того как объекты будут сохранены в локальном кэше, приложение может использовать эти объекты, пока они не станут недействительными, вне зависимости от того, были ли они обновлены другим клиентом кластера кэша. По этой причине локальный кэш лучше использовать для хранения редко изменяемых данных.

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

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

noteПримечание
Уведомления не поддерживаются в Shared Caching.

При использовании уведомлений кэша приложение регулярно обращается к кластеру кэша для проверки наличия новых уведомлений. Этот интервал, называемый интервалом опроса, по умолчанию составляет 300 секунд. Интервал опроса задается в секундах в параметрах конфигурации приложения. Обратите внимание, что при использовании недействительности на основе уведомлений, тайм-ауты по-прежнему применяются к объектам в локальном кэше. Таким образом, недействительность на основе уведомлений дополняет недействительность на основе тайм-аута.

Дополнительные сведения и примеры см. в разделе Локальный кэш (кэш на основе ролей для Кэша Azure).

Для поддержания достаточного объема памяти, доступного для кэша на каждом узле кэша, используется алгоритм вытеснения LRU (вытеснение наиболее давно использовавшихся объектов). Пороговые значения используются для обеспечения равномерного распределения памяти между всеми узлами кэша в кластере. Это пороговое значение определяется двумя факторами: объемом физической памяти, доступной на каждом из компьютеров, и процентным значением памяти кэша, которая зарезервирована на каждом из компьютеров.

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

WarningПредупреждение
Если отключить вытеснение, возникнет риск регулирования количества запросов. При таких условиях порог для памяти превышен, однако возможности уменьшить нехватку памяти нет. Клиенты, пытающиеся добавить элементы в кэш при таком состоянии, получают исключение вплоть до устранения проблемы. Обратите внимание, что Shared Caching не поддерживает отключение вытеснения из кэша.

Параметры окончания срока действия и вытеснения настраиваются на уровне именованного кэша в параметрах конфигурации кластера.

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

  • Методы Add и Put представляют собой методы перегрузки, позволяющие указывать значение тайм-аута только для объектов, добавляемых в кэш.

  • Методы PutAndUnlock и Unlock представляют собой методы перегрузки, позволяющие продлевать срок действия объекта после снятия блокировки.

  • Метод ResetObjectTimeout позволяет явным образом продлевать время жизни объекта, переопределяя параметры срока действия на уровне кэша.

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

См. также

Показ:
© 2014 Microsoft