Рубрики
Без рубрики

Введение в Spring Data Redis

Краткое и практическое введение в Spring Data Redis, которое предоставляет абстракции от платформы Spring Data для Redis.

Автор оригинала: baeldung.

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 RedisTemplate redisTemplate() {
    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() :

List students = new ArrayList<>();
studentRepository.findAll().forEach(students::add);

Затем мы можем быстро проверить размер students list или проверить большую степень детализации, проверив свойства каждого объекта.

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

В этом уроке мы познакомились с основами Spring Data Redis. Исходный код приведенных выше примеров можно найти в проекте GitHub .