Как обновить кэш второго уровня? - PullRequest
4 голосов
/ 30 августа 2011

Как принудительно перечитать данные в БД (не удаляя кеш второго уровня перед чтением), а затем поместить их в кеш.

Вариант использования следующий:

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

Есть ли возможность «обновить» кэш второго уровня таким образом, чтобы другие клиенты SessionFactory не вызывали попадания в дБ (получат старые элементы во время чтения обновленных данных).

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

1 Ответ

4 голосов
/ 30 августа 2011

Время от времени, чтобы вызвать чтение в БД, вы можете установить CacheMode в сеансе на REFRESH - данные будут выбираться из БД для этого одного клиента, и любые обновления добавляются вкеш второго уровня.Другие клиенты, запрашивающие с использованием обычного режима кэширования, будут читать из кэша второго уровня, не нажимая db.

См. CacheMode

...