Перейти к основному содержимому

Конфигурация Spring Data Redis на основе свойств

· 3 мин. чтения

1. Обзор

Одной из главных достопримечательностей Spring Boot является то, что сторонняя конфигурация часто сводится к нескольким свойствам.

В этом руководстве мы увидим, как Spring Boot упрощает работу с Redis.

2. Почему Redis?

Redis — одно из самых популярных хранилищ структур данных в памяти. По этой причине его можно использовать в качестве базы данных, кэша и брокера сообщений.

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

И он хорошо сочетается с приложениями Spring Boot . Например, мы можем использовать его в качестве кеша в нашей архитектуре микросервисов. Мы также можем использовать его в качестве базы данных NoSQL.

3. Запуск Redis

Для начала давайте создадим экземпляр Redis, используя их официальный образ Docker .

$ docker run -p 16379:6379 -d redis:6.0 redis-server --requirepass "mypass"

Выше мы только что запустили экземпляр Redis на порту 16379 с паролем mypass .

4. Стартер

Spring предоставляет нам отличную поддержку для подключения наших приложений Spring Boot к Redis с помощью Spring Data Redis .

Итак, далее давайте удостоверимся, что у нас есть зависимость spring-boot-starter-data-redis в нашем pom.xml :

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>

5. Салат

Далее настроим клиент.

Клиент Java Redis, который мы будем использовать, — это Lettuce , поскольку Spring Boot использует его по умолчанию. Однако мы могли бы также использовать Jedis .

В любом случае результатом будет экземпляр RedisTemplate :

@Bean
public RedisTemplate<Long, Book> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<Long, Book> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
// Add some specific configuration here. Key serializers, etc.
return template;
}

6. Свойства

Когда мы используем Lettuce, нам не нужно настраивать RedisConnectionFactory. Spring Boot делает это за нас.

Все, что нам осталось, это указать несколько свойств в нашем файле application.properties :

spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=16379
spring.redis.password=mypass
spring.redis.timeout=60000

Соответственно:

  • база данных устанавливает индекс базы данных, используемый фабрикой соединений
  • host - это место, где находится хост сервера
  • порт указывает порт, где сервер прослушивает
  • password — это пароль для входа на сервер, а
  • тайм- аут устанавливает тайм-аут соединения

Конечно, есть много других свойств, которые мы можем настроить. Полный список свойств конфигурации доступен в документации Spring Boot.

7. Демо

Наконец, давайте попробуем использовать его в нашем приложении. Если мы представим себе класс Book и BookRepository, мы сможем создавать и извлекать Book , используя наш RedisTemplate для взаимодействия с Redis в качестве нашего бэкенда:

@Autowired
private RedisTemplate<Long, Book> redisTemplate;

public void save(Book book) {
redisTemplate.opsForValue().set(book.getId(), book);
}

public Book findById(Long id) {
return redisTemplate.opsForValue().get(id);
}

По умолчанию Lettuce будет управлять сериализацией и десериализацией вместо нас, так что на данный момент нам больше нечего делать. Однако хорошо знать, что это также можно настроить.

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

8. Заключение

В этой статье мы настроили Spring Boot для общения с Redis через Lettuce. И мы достигли этого с помощью стартера, одной конфигурации @Bean и нескольких свойств.

В завершение мы использовали RedisTemplate , чтобы Redis выступал в качестве простого бэкенда.

Полный пример можно найти на GitHub .