Если мой Ehcache настроен на TTL, нужно ли проверять, не истек ли срок действия полученного элемента? - PullRequest
3 голосов
/ 11 марта 2011

Я не могу найти это нигде в документации Ehcache.

Сейчас я использую этот код для создания и настройки моего Cache:

// Groovy syntax

def cacheConfig = new CacheConfiguration('stats', 1)
cacheConfig.timeToLiveSeconds = 2

def cache = new Cache(cacheConfig)
cache.initialise()

, и это длявосстановить данные:

// Groovy syntax

def cachedElement = cache.get('stats')

if (cachedElement != null && ! cachedElement.isExpired()) {
    // use the cached data
} else {
    // get/generate the data and cache it
}

return cachedElement.value

Я писал это некоторое время назад, но, глядя на это сейчас, кажется глупым проверять Element.isExpired() - в этом нет необходимости, верно?Я имею в виду, если срок действия элемента истек, то кеш не должен его возвращать - верно?

Так что я думаю, что могу снять эту проверку - просто надеясь на быструю проверку работоспособности здесь.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

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

0 голосов
/ 01 апреля 2011

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

<ehcache:config cache-manager="ehCacheManager">
  <!-- interval is in minutes -->
  <ehcache:evict-expired-elements interval="20"/>
</ehcache:config>

но всегда есть вероятность, что ваш доступ попадет в этот интервал. Если вы абсолютно уверены, что ваши значения никогда null, то вы можете отбросить вызов isExpired ().

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