Привыкая к Redis, многие забыли, что есть еще одно решение для кэширования, Ehcache. Да, в эпоху, когда Redis доминирует над реками и озерами, Ehcache постепенно приходил в упадок. по-прежнему использовать Ehcache.
Сегодня Brother Song расскажет вам об использовании Ehcache в Spring Boot. Я верю, что после прочтения этой статьи у вас будет отличное понимание [Spring Boot работает с Redis, три решения полностью проанализированы!] Второй вариант в статье будет иметь более глубокое понимание.
Ehcache также является одним из лучших решений кэширования в области Java. Название Ehcache очень интересно. Оба являются Ehcache. Spring Boot также обеспечивает хорошую поддержку для этого. Эта поддержка в основном через Spring. Кэш для достижения.
Весенний кеш может интегрировать Redis, конечно, также быть интегрированным EHCACHE, интеграция обеих схемы кэширования вполне аналогична, основным отличием является конфигурация конкретного использования именно то же самое, аналогичное соотношением на базу данных JDBC и то же самое. После вышестоящей конфигурации API за особым использованием одинаковы.
По сравнению с Spring Cache + Redis, Spring Cache + Ehcache в основном имеет разные конфигурации, и конкретное использование точно такое же. Давайте посмотрим на шаги, чтобы использовать его.
создание проекта
Сначала создайте проект Spring Boot и введите зависимости Cache:
После создания проекта вводятся зависимости Ehcache.На данный момент Ehcache имеет две версии:
Здесь используется второй, в файле pom.xml введена зависимость Ehcache:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.6</version>
</dependency>
</dependencies>
Добавить конфигурацию Ehcache
В каталог ресурсов добавьте файл конфигурации ehcache ehcache.xml со следующим содержимым:
<ehcache>
<diskStore path="java.io.tmpdir/shiro-spring-sample"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="false"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
/>
<cache name="user"
maxElementsInMemory="10000"
eternal="true"
overflowToDisk="true"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="600"/>
</ehcache>
Значение конфигурации:
- имя: имя кеша.
- maxElementsInMemory: максимальное количество кэшей.
- вечный: Является ли объект постоянно действительным, после его установки тайм-аут не будет работать.
- timeToIdleSeconds: устанавливает допустимое время простоя (единица измерения: секунды) для объекта до истечения срока его действия. Он используется только тогда, когда объект internal=false не является постоянно допустимым, необязательный атрибут, значение по умолчанию равно 0, то есть время простоя бесконечно.
- timeToLiveSeconds: устанавливает время, в течение которого объект может жить до истечения срока его действия (единица измерения: секунды). Максимальное время находится между временем создания и временем истечения срока действия. Он используется только в том случае, если объект internal=false не является постоянным.Значение по умолчанию равно 0. То есть время жизни объекта бесконечно.
- Overflowtodisk: Когда количество объектов в памяти достигает максимальных изменений, EHCACHACLE напишет объекты на диск.
- diskSpoolBufferSizeMB: этот параметр задает размер буфера DiskStore (дискового кеша). По умолчанию 30 МБ. У каждого кэша должен быть свой буфер.
- maxElementsOnDisk: максимальное количество кэшей на жестком диске.
- diskPersistent: следует ли кэшировать данные во время перезапуска виртуальной машины.
- diskExpiryThreadIntervalSeconds: интервал времени выполнения потока истечения срока действия диска, значение по умолчанию — 120 секунд.
- memoryStoreEvictionPolicy: при достижении предела maxElementsInMemory Ehcache очистит память в соответствии с указанной политикой. Политика по умолчанию — LRU (наименее недавно использовавшаяся). Вы можете установить его на FIFO (первым пришел, первым вышел) или LFU (реже используется).
- clearOnFlush: очищать ли память, когда объем памяти самый большой.
- diskStore сказал, что это временный кеш на вашем жестком диске.
Уведомление
По умолчанию имя файла фиксировано и должно называться ehcache.xml.Если необходимо изменить имя, необходимо явно указать имя файла конфигурации в application.properties.Метод настройки следующий:
spring.cache.ehcache.config=classpath:aaa.xml
включить кеш
Способ открытия кеша такой же, как и в Redis, добавляем следующее@EnableCaching
Зависит от:
@SpringBootApplication
@EnableCaching
public class EhcacheApplication {
public static void main(String[] args) {
SpringApplication.run(EhcacheApplication.class, args);
}
}
В самом деле, на данный момент Ehcache, даже если конфигурация завершена, следующее использование, и Redis, выступая перед песней Ge точно в той же статье. Но это Li Songge по-прежнему использовать все, чтобы использовать дальше.
использовать кеш
Здесь в основном для небольших партнеров, чтобы ввести несколько аннотаций основного кэша для использования.
@CacheConfig
Эта аннотация используется в классе для описания имени кеша, используемого всеми методами в классе. Конечно, вы также можете настроить имя непосредственно для конкретной аннотации кеша, не используя эту аннотацию. Пример кода выглядит следующим образом:
@Service
@CacheConfig(cacheNames = "user")
public class UserService {
}
@Cacheable
Эта аннотация обычно добавляется к методу запроса, указывая, что возвращаемое значение метода кэшируется.По умолчанию кэшированный ключ является параметром метода, а кэшированное значение является возвращаемым значением метода. Пример кода выглядит следующим образом:
@Cacheable(key = "#id")
public User getUserById(Integer id,String username) {
System.out.println("getUserById");
return getUserFromDBById(id);
}
При наличии нескольких параметров несколько параметров используются в качестве ключа по умолчанию. Если вам нужен только один из параметров в качестве ключа, вы можете указать ключ через атрибут ключа в аннотации @Cacheable. Приведенный выше код означает, что только В качестве ключа используется id.Кэшированный ключ, если у вас сложные требования к ключу, вы можете настроить keyGenerator. Конечно, Spring Cache предоставляет корневой объект, с помощью которого можно добиться некоторых сложных эффектов без определения генератора ключей.Корневой объект имеет следующие свойства:
Вы также можете настроить ключ через keyGenerator следующим образом:
@Component
public class MyKeyGenerator implements KeyGenerator {
@Override
public Object generate(Object target, Method method, Object... params) {
return method.getName()+Arrays.toString(params);
}
}
Затем используйте этот генератор ключей в методе:
@Cacheable(keyGenerator = "myKeyGenerator")
public User getUserById(Long id) {
User user = new User();
user.setId(id);
user.setUsername("lisi");
System.out.println(user);
return user;
}
@CachePut
The annotation is generally added to the updating method, when the updated data in the database, data in the cache should be updated to follow, the use of annotations, the method returns the value may be automatically updated on an already existing key, the following образец кода:
@CachePut(key = "#user.id")
public User updateUserById(User user) {
return user;
}
@CacheEvict
Эта аннотация обычно добавляется к методу удаления. Когда данные в базе данных удаляются, соответствующие кэшированные данные также должны автоматически очищаться. При использовании этой аннотации ее также можно настроить на удаление в соответствии с определенными условиями ( атрибут условия ) или настроить для очистки всех кешей (свойство allEntries), пример кода выглядит следующим образом:
@CacheEvict()
public void deleteUserById(Integer id) {
//在这里执行删除操作, 删除是去数据库中删除
}
Суммировать
Эта статья в основном вводит использование весеннего ботинка для интеграции Ehcache. На самом деле это использование весеннего кеша. Я считаю, что после прочтения этой статьи вы будете более глубокое понимание использования Wrens + Spring Cache.
Я загрузил случай этой статьи на GitHub, добро пожаловать в звезду:GitHub.com/Len VE/Java не…
Если у вас есть какие-либо вопросы по этой статье, пожалуйста, оставьте сообщение для обсуждения.
Обратите внимание на общедоступный номер [Jiangnan A Little Rain], сосредоточьтесь на полнофункциональных технологиях, таких как Spring Boot + микросервисы и разделение интерфейсной и серверной части, делитесь регулярными видеоуроками, отвечайте на Java после подписки и получайте Java галантереи, тщательно подготовленные Songge для вас!