1. Обзор
Эта статья является введение в Spring Data Redis , который предоставляет абстракции платформы данных Spring для Редис – популярное хранилище структур данных в памяти.
Redis управляется структурой данных на основе хранилища ключей для сохранения данных и может использоваться в качестве базы данных, кэша, брокера сообщений и т. Д.
Мы сможем использовать общие шаблоны данных Spring (шаблоны и т. Д.), А также иметь традиционную простоту всех проектов данных Spring.
2. Зависимости Maven
Давайте начнем с объявления зависимостей Spring Data Redis в pom.xml :
org.springframework.data spring-data-redis 2.3.3.RELEASE redis.clients jedis 3.3.0 jar
Последние версии spring-data-redis и jedis можно загрузить с Maven Central.
В качестве альтернативы мы можем использовать Spring Boot starter для Redis, что устранит необходимость в отдельных зависимостях spring-data и jedis :
org.springframework.boot spring-boot-starter-data-redis 2.3.3.RELEASE
Опять же, Maven central предлагает информацию о последней версии.
3. Конфигурация Redis
Чтобы определить параметры подключения между клиентом приложения и экземпляром сервера Redis, нам необходимо использовать клиент Redis.
Существует ряд реализаций клиента Redis, доступных для Java. В этом уроке мы будем использовать Jedis – простую и мощную реализацию клиента Redis .
В фреймворке есть хорошая поддержка как XML, так и конфигурации Java; в этом руководстве мы будем использовать конфигурацию на основе Java.
3.1. Конфигурация Java
Давайте начнем с определений компонентов конфигурации:
@Bean JedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory(); } @Bean public RedisTemplateredisTemplate() { RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); return template; }
Конфигурация довольно проста. Во-первых, используя клиент Jedis, мы определяем ConnectionFactory .
Затем мы определили RedisTemplate с помощью JedisConnectionFactory. Это можно использовать для запроса данных в пользовательском репозитории.
3.2. Пользовательские свойства Подключения
Возможно, вы уже заметили, что в приведенной выше конфигурации отсутствуют обычные свойства, связанные с подключением. Например, в конфигурации отсутствуют адрес и порт сервера. Причина проста: в нашем примере мы используем значения по умолчанию.
Однако, если нам нужно настроить детали подключения, мы всегда можем изменить конфигурацию JedisConnectionFactory следующим образом:
@Bean JedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(); jedisConFactory.setHostName("localhost"); jedisConFactory.setPort(6379); return jedisConFactory; }
4. Репозиторий Redis
Давайте использовать объект Student для наших примеров:
@RedisHash("Student") public class Student implements Serializable { public enum Gender { MALE, FEMALE } private String id; private String name; private Gender gender; private int grade; // ... }
4.1. Хранилище данных Spring
Теперь давайте создадим StudentRepository следующим образом:
@Repository public interface StudentRepository extends CrudRepository{}
5. Доступ К Данным С Помощью StudentRepository
Путем расширения Грубая репозиция в Студенческая аудитория , мы автоматически получаем полный набор методов сохранения, которые выполняют функции CRUD.
5.1. Сохранение нового объекта учащегося
Давайте сохраним новый объект student в хранилище данных:
Student student = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1); studentRepository.save(student);
5.2. Извлечение существующего объекта учащегося
Мы можем проверить правильность вставки студента в предыдущем разделе, получив данные студента:
Student retrievedStudent = studentRepository.findById("Eng2015001").get();
5.3. Обновление существующего объекта учащегося
Давайте изменим имя студента, полученное выше, и сохраним его снова:
retrievedStudent.setName("Richard Watson"); studentRepository.save(student);
Наконец, мы можем снова получить данные студента и убедиться, что имя обновлено в хранилище данных.
5.4. Удаление существующих данных Студента
Мы можем удалить вставленные выше данные о студентах:
studentRepository.deleteById(student.getId());
Теперь мы можем выполнить поиск объекта student и убедиться, что результат равен null .
5.5. Найти Все Данные О Студентах
Мы можем вставить несколько студенческих объектов:
Student engStudent = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1); Student medStudent = new Student( "Med2015001", "Gareth Houston", Student.Gender.MALE, 2); studentRepository.save(engStudent); studentRepository.save(medStudent);
Мы также можем достичь этого, вставив коллекцию. Для этого существует другой метод – saveAll() – который принимает один Итерируемый объект, содержащий несколько объектов учащихся, которые мы хотим сохранить.
Чтобы найти всех вставленных студентов, мы можем использовать метод findAll() :
Liststudents = new ArrayList<>(); studentRepository.findAll().forEach(students::add);
Затем мы можем быстро проверить размер students list или проверить большую степень детализации, проверив свойства каждого объекта.
6. Заключение
В этом уроке мы познакомились с основами Spring Data Redis. Исходный код приведенных выше примеров можно найти в проекте GitHub .