Я пытаюсь перенести код своего проекта из OSCache в EhCache.
Мы использовали OSCache не только в качестве поставщика кэша Hibernate второго уровня, но и для хранения других объектов другой природы.Все они счастливо использовали один и тот же экземпляр кэша без каких-либо коллизий из-за неперекрывающихся ключей кэша.
Одно большое отличие при переходе к EhCache заключается в том, что у каждого региона свой экземпляр кэша.Это потенциально хорошо, так как может улучшить скорость поиска, поскольку данные различной природы находятся отдельно.К сожалению, это имеет цену конфигурации ада.Позвольте мне объяснить.
В мире OSCache я бы сконфигурировал емкость своего кэша, скажем, 10000. Теперь, если для конкретной установки потребуется / может быть больше оперативной памяти, я бы легко увеличил ее до 50000и это будет делать.Теперь в EhCache мне нужно перейти и изменить настройку по частям этой дельты для каждого региона!
Более того, в одной установке может быть более широкое использование объектов типа X, тогда как в другой установке может быть предпочтительнее более высокий отток объектов типаY. У нас есть десятки установок, и каждая установка будет иметь сотни разных кешей.Для этого нам нужно было бы нанять группу людей, которые просто занимались бы мониторингом шаблонов кеша и настройкой параметров!
Я ожидал, что CacheManager
будет иметь какую-то глобальную настройку емкости кеша, и каждый внутренний кеш будетбороться за большую емкость, в зависимости от использования входа.Однако я нашел единственный способ установить емкость кеша через CacheConfiguration
, который является многозначным по сравнению с CacheManager
.
Пока что единственный вариант, который я вижу, это попытаться заставить Hibernate выполнитьиспользовать один глобальный кеш для всех сущностей.Кто-нибудь знает, как это сделать?Есть ли другие, лучшие решения для моего сценария?