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 :
org.springframework.boot spring-boot-starter-data-redis 2.2.6.RELEASE
5. Салат-латук
Далее, давайте настроим клиент.
Клиент Java Redis , который мы будем использовать, – это Салат , так как Spring Boot использует его по умолчанию. Однако мы могли бы также использовать Джедаев .
В любом случае результатом является экземпляр RedisTemplate :
@Bean public RedisTemplateredisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(connectionFactory); // Add some specific configuration here. Key serializers, etc. return template; }
6. Свойства
Когда мы используем салат, нам не нужно настраивать 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
Соответственно:
- database задает индекс базы данных, используемый фабрикой соединений
- хост – это место, где находится хост сервера
- порт указывает порт, через который сервер прослушивает
- пароль – это пароль для входа на сервер, и
- тайм-аут устанавливает тайм-аут соединения
Конечно, есть много других свойств, которые мы можем настроить. Полный список свойств конфигурации доступен в документации по загрузке Spring.
7. Демонстрация
Наконец, давайте попробуем использовать его в нашем приложении. Если мы представим себе класс Book и репозиторий Book, мы можем создавать и извлекать Book s, используя нашу RedisTemplate для взаимодействия с Redis в качестве нашего бэкенда:
@Autowired private RedisTemplateredisTemplate; public void save(Book book) { redisTemplate.opsForValue().set(book.getId(), book); } public Book findById(Long id) { return redisTemplate.opsForValue().get(id); }
По умолчанию салат будет управлять сериализацией и десериализацией для нас, так что на данный момент делать больше нечего. Тем не менее, полезно знать, что это также можно настроить.
Еще одна важная особенность заключается в том , что RedisTemplate потокобезопасен , поэтому он будет правильно работать в многопоточных средах .
8. Заключение
В этой статье мы настроили Spring Boot для общения с Redis через Салат. И мы достигли этого с помощью стартера, одной конфигурации @Bean и нескольких свойств.
Чтобы завершить, мы использовали RedisTemplate , чтобы Redis действовал как простой сервер.
Полный пример можно найти на GitHub .