Ehcache вечный кеш забыть предметы - PullRequest
1 голос
/ 17 августа 2010

Конверт: Spring 2.5.6, Hibernate 3.3.2, Ehcache 2.0.1, terracotta 3.2.1

У меня есть кеш на абстрактном классе (с 5 наследниками)

<cache name="com.f4.owl.domain.good.GoodType"
       maxElementsInMemory="15000"
       eternal="false"
       timeToIdleSeconds="0"
       timeToLiveSeconds="0"
       overflowToDisk="false">
    <terracotta/>
</cache>

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

при использовании терракотовой консоли разработчика действительно кажется, что кэш-память очищается от 6550 до около 70 элементов.

Исходя из того, что я понимаю, установка как timeToIdleSeconds, так и timeToLiveSeconds в ноль должна сделать кэш вечным и, следовательно, никогда не уменьшаться.Может кто-нибудь пролить свет на это?

1 Ответ

1 голос
/ 18 августа 2010

наконец прибил его.

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

объяснения здесь:http://opensource.atlassian.com/projects/hibernate/browse/HHH-2224

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

<sql-query name="queryname">
<synchronize table="tablename"/>
...
</sql-query>
...