Время жизни элемента Ehcache в кеше - PullRequest
4 голосов
/ 10 ноября 2011

Создание образа Spring в следующем порядке:

+--------+           +---------+             +---------+
|Backend | --------- | My      | ----------- | Clients |
|service |           | service |             |         |
+--------+           +---------+             +---------+

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

Теперь, если у меня установлены эти параметры

long timeToLiveSeconds
long timeToIdleSeconds

и клиенты делают запросы слишком часто, срок действия timeToIdleSeconds не истечет, но срок действия timeToLiveSeconds все равно истечет, и элемент будет удален из кэша, в который я его поместил, верно?

Ответы [ 2 ]

4 голосов
/ 11 ноября 2011

Да, вы правы.

Например:

timeToIdleSeconds = 30: если кэшированный объект не был запрошен в течение этих 30 секунд, срок его действия истекает => время последнего доступа имеет значение

timeToLiveSeconds = 60: через 60 секунд срок действия кэшированного объекта истекает - независимо от того, как часто он запрашивался или запрашивался вообще => время создания имеет значение

Из документов (более старая версия 1.4):

timeToIdleSeconds: Устанавливает время простоя элемента до его истечения. максимальный промежуток времени между доступами до истечения срока действия элемента Используется только если элемент не вечен. Необязательный атрибут. Значение 0 означает, что Элемент может простаивать бесконечно. Значение по умолчанию - 0.

timeToLiveSeconds: Устанавливает время жизни элемента до его истечения. т.е. максимальное время между временем создания и истечением срока действия элемента. Используется только если элемент не вечен. Необязательный атрибут. Значение 0 означает, что и Элемент может жить бесконечно долго. Значение по умолчанию - 0.

0 голосов
/ 30 апреля 2012

Если вы установите оба, expirationTime будет Math.min(ttlExpiry, ttiExpiry), где

ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle

Полный исходный код здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...