3. Ehcache
Ehcache – это высокопроизводительный провайдер кеша, который работает локально в памяти приложения. Он также поддерживает персистентность данных.
Нюансы работы с Ehcache
Хранение данных:
Данные кешируются в памяти, но могут быть настроены для сохранения на диск (для долговременного хранения).
Конфигурация TTL и TTI:
TTL (time-to-live) определяет максимальное время хранения записи.
TTI (time-to-idle) сбрасывается при каждом доступе к записи.
Гибкость настройки:
Ehcache можно настроить с разной стратегией хранения, например, только в памяти или с поддержкой записи на диск.
Ограничения:
Ehcache работает только локально, что делает его менее подходящим для распределённых систем.
В высоконагруженных приложениях использование кеша в памяти может быть ограничено объёмом оперативной памяти.
Шаги настройки Ehcache
Создайте конфигурацию Ehcache (ehcache.xml):
Конфигурация Spring для Ehcache:
Рекомендации по выбору
Используйте Redis, если:
Вам нужно кеширование в распределённой системе.
Данные должны быть доступны всем экземплярам приложения.
Есть потребность в масштабируемости и гибкости.
Используйте Ehcache, если:
Вы хотите локальное кеширование с минимальными задержками.
Вам важна поддержка дисковой персистентности.
Используйте Caffeine, если:
Вы ищете максимальную производительность и минимальное потребление ресурсов.
Приложение работает локально и не требует масштабируемости.
#Java #Training #Spring #Ehcache
Ehcache – это высокопроизводительный провайдер кеша, который работает локально в памяти приложения. Он также поддерживает персистентность данных.
Нюансы работы с Ehcache
Хранение данных:
Данные кешируются в памяти, но могут быть настроены для сохранения на диск (для долговременного хранения).
<cache alias="persistentCache">
<heap unit="entries">1000</heap>
<disk persistent="true" directory="./cache-data" />
</cache>
Конфигурация TTL и TTI:
TTL (time-to-live) определяет максимальное время хранения записи.
TTI (time-to-idle) сбрасывается при каждом доступе к записи.
<cache alias="myCache">
<heap unit="entries">500</heap>
<expiry>
<ttl unit="seconds">300</ttl> <!-- 5 минут -->
<tti unit="seconds">60</tti> <!-- 1 минута неактивности -->
</expiry>
</cache>
Гибкость настройки:
Ehcache можно настроить с разной стратегией хранения, например, только в памяти или с поддержкой записи на диск.
Ограничения:
Ehcache работает только локально, что делает его менее подходящим для распределённых систем.
В высоконагруженных приложениях использование кеша в памяти может быть ограничено объёмом оперативной памяти.
Шаги настройки Ehcache
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
Создайте конфигурацию Ehcache (ehcache.xml):
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.ehcache.org/v3">
<cache alias="myCache">
<heap unit="entries">100</heap>
<expiry>
<ttl unit="seconds">300</ttl>
</expiry>
</cache>
</config>
Конфигурация Spring для Ehcache:
@Configuration
@EnableCaching
public class EhcacheConfig {
@Bean
public CacheManager cacheManager() {
return new EhCacheCacheManager(CacheManager.newInstance("ehcache.xml"));
}
}
Теперь можно использовать кеширование с Ehcache.
Рекомендации по выбору
Используйте Redis, если:
Вам нужно кеширование в распределённой системе.
Данные должны быть доступны всем экземплярам приложения.
Есть потребность в масштабируемости и гибкости.
Используйте Ehcache, если:
Вы хотите локальное кеширование с минимальными задержками.
Вам важна поддержка дисковой персистентности.
Используйте Caffeine, если:
Вы ищете максимальную производительность и минимальное потребление ресурсов.
Приложение работает локально и не требует масштабируемости.
#Java #Training #Spring #Ehcache