Истечение срока действия и вытеснение для управляемой службы Azure

Важно!

Корпорация Майкрософт рекомендует все новые разработки использовать кэш Redis для Azure. Текущая документация и рекомендации по выбору предложения кэша Azure см. в статье о том, какое предложение кэша Azure подходит для меня?

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

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

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

Политика срока действия работает в совокупности с параметром Время (мин) для определения момента истечения срока действия элементов в кэше, и данное поведение настраиваются на уровне именованного кэша на портале управления на вкладке "Настройка" для кэша.

Expiry Policy for Windows Azure Cache Service

Существует три типа значений параметра "Политика окончания срока действия": Абсолютный, Sliding (Скользящий) и Никогда.

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

Никогда

Истечение срока действия отключено. Элементы остаются в кэше, пока не будут вытеснены. Если указано Никогда, Время (мин) должно быть задано как 0.

Absolute

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

Скользящая

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

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

Примечание

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

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

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

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

Недействительность локального кэша

Существует два дополняющих типа недействительности локального кэша: недействительность, основанная на ожидании, и недействительность, основанная на уведомлении.

Совет

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

Недействительность, основанная на ожидании

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

Недействительность, основанная на уведомлении

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

Примечание

Уведомления доступны для размеров кэша Standard и Premium, но не доступны для размера кэша Basic. Дополнительные сведения см. в статье "Предложения кэша для Azure управляемая служба кэша".

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

Дополнительные сведения и примеры см. в разделе "Локальный кэш" для Azure управляемая служба кэша.

вытеснение

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

Предупреждение

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

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

Существует два параметра для вытеснения: "Включено " и "Отключено". Вытеснение настраивается на уровне именованного кэша на портале управления на вкладке "Настройка" для кэша, значением по умолчанию является Включено.

Eviction Policy for Windows Azure Cache Service

Определение настроек истечения срока действия и удаления данных с использованием кода

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

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

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

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

Примечание

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

См. также:

Другие ресурсы

Функции управляемой службы кэша Azure