Привет, мои коллеги-хипстеры, хипстер не мог бы быть шумихой, если бы мы часто не добавляли лучшие функции. Сегодня я хотел бы представить вам новую опцию кэширования в Hipster под названием Caffeine. Я понимаю, как вам может не терпеться узнать все об этом, но сохраняйте спокойствие, пейте кофе и наслаждайтесь.
Кто такой Кэффи?
Caffeine – это кэш-решение для повышения производительности ваших приложений. Согласно официальному проекту Github:
Кофеин предоставляет кэш в памяти с использованием API, вдохновленного Google Guava. Улучшения основаны на нашем опыте проектирования Тайник с гуавой и Concurrentlink HashMap .
Проект насчитывает 27 участников и более 6 тысяч звезд на Github. Первая версия была выпущена в марте 2015 года.
К счастью для нас, доступна реализация Spring cache .
Узнайте больше по адресу https://github.com/ben-manes/caffeine
Зачем использовать кэш?
Использование кэша для меня просто необходимо. С JHipster мы всегда придаем большое значение такого рода решениям . Эффективное использование кэша значительно улучшит вашу производительность, особенно когда вам необходимо извлекать данные, которые обновляются не так часто.
Как использовать кофеин с хипстером
Как обычно, мы сделали его простым в использовании для вас. Вам просто нужно обновить свой Hipster до последней версии и начать создавать проект. На вопрос об абстракции spring cache доступен новый ответ:
Как вы можете видеть, кофеин предназначен для локального кэша с одним узлом, это означает, что вы не должны выбирать его, если вам нужно масштабировать свое приложение, особенно с микросервисами. Кофеин является альтернативой EhCache, поэтому код, сгенерированный с помощью обоих вариантов, довольно близок.
Как вам нравится ваш кофе?
Так же, как и другие кэши с JHipster, вы можете легко настроить его. Конфигурация кэша доступна в следующем классе: your_package.config. Конфигурация кэша.
public CacheConfiguration(JHipsterProperties jHipsterProperties) {
JHipsterProperties.Cache.Caffeine caffeine = jHipsterProperties.getCache().getCaffeine();
CaffeineConfiguration caffeineConfiguration = new CaffeineConfiguration();
caffeineConfiguration.setMaximumSize(OptionalLong.of(caffeine.getMaxEntries()));
caffeineConfiguration.setExpireAfterWrite(OptionalLong.of(TimeUnit.SECONDS.toNanos(caffeine.getTimeToLiveSeconds())));
caffeineConfiguration.setStatisticsEnabled(true);
jcacheConfiguration = caffeineConfiguration;
}
Как мы можем видеть, мы можем настроить как параметры maximum_size, так и expire_after_write. Эти два значения параметра загружаются из свойств JHipster. Вы можете изменить эти значения, перейдя в application-dev.yml или application-prod.yml.
jhipster:
cache: # Cache configuration
caffeine: # Caffeine configuration
time-to-live-seconds: 3600 # By default objects stay 1 hour in the cache
max-entries: 100 # Number of objects in each cache entry
Больше кофеина, пожалуйста, пожалуйста
Если вы хотите создать больше кэшей для своих элементов в конфигурации кэша, у вас есть два способа: сделай сам (сделай сам) или с помощью great entities generation с помощью JDL. Для этой статьи я выбираю второй способ (конечно, вы сделали то же самое).
Эта часть на самом деле не связана с кофеином, Spring Cache предлагает отличный уровень абстракции, поэтому вы можете иметь аналогичную часть с EhCache (например).
Вот моя простая конфигурация JDL:
entity Region {
regionName String
}
entity Country {
countryName String
}
relationship OneToOne {
Country{region} to Region
}
Давайте импортируем его в наше приложение: импорт jhipster-jdl my_jdl.jh
Теперь созданы наши новые классы. Давайте взглянем на конфигурацию кэша:
createCache(cm, com.mycompany.myapp.domain.Region.class.getName()); createCache(cm, com.mycompany.myapp.domain.Country.class.getName());
Здесь Hipster добавляет новый кэш, определенный именем сущности, в Spring CacheManager. Единственное, что нам нужно сделать, это сообщить Spring, где мы хотим использовать кэш. Давайте создадим новый запрос в репозитории страны:
@Cacheable("com.mycompany.myapp.repository.Country")
Country findCountriesByCountryNameIsStartingWith(String countryNameStarter);
Итак, каждый раз, когда я буду вызывать этот метод с одним и тем же параметром из своего репозитория, я буду получать значения из кэша, если значения уже были извлечены ранее. Наш кэш успешно настроен и используется.
Вывод
Использование кэша – это реальный способ повысить производительность и избежать перегрузки вашей базы данных. В Hipster мы всегда фокусируемся на проблемах производительности, и именно поэтому нам нужны лучшие решения для кэширования для наших пользователей. Кофеин теперь предлагается Hipster в качестве кэша решений.
Особая благодарность Судхараке Паламакумбуре , которая сделала пиар для интеграции кофеина. Если вы хотите, как Судхарака, помочь проекту развиваться, заходите на Github project .
Оригинал: “https://dev.to/avdev4j/cache-your-jhipster-with-caffeine-43on”