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

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

1. обзор

Это статьяan introduction to Spring Data Redis, которая предоставляет абстракции платформы Spring Data дляRedis - популярного хранилища структур данных в памяти.

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

Мы сможем использовать общие шаблоны Spring Data (шаблоны и т. Д.), Сохраняя при этом традиционную простоту всех проектов Spring Data.

2. Maven Зависимости

Начнем с объявления зависимостей Spring Data Redis вpom.xml:


    org.springframework.data
    spring-data-redis
    2.0.3.RELEASE
 


    redis.clients
    jedis
    2.9.0
    jar

Последние версииspring-data-redis иjedis можно загрузить с Maven Central.

3. Конфигурация Redis

Чтобы определить параметры соединения между клиентом приложения и экземпляром сервера Redis, нам нужно использовать клиент Redis.

Существует ряд реализаций клиента Redis для Java. В этом руководствеwe’ll use Jedis – a simple and powerful Redis client implementation.

В фреймворке есть хорошая поддержка конфигурации как 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

РасширяяCrudRepository вStudentRepository, мы автоматически получаем полный набор методов сохранения состояния, которые выполняют функции CRUD.

5.1. Сохранение нового студенческого объекта

Давайте сохраним новый объект ученика в хранилище данных:

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());

Теперь мы можем найти объект ученика и убедиться, что результат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(), который принимает один объектIterable, содержащий несколько объектов учеников, которые мы хотим сохранить.

Чтобы найти всех вставленных студентов, мы можем использовать методfindAll():

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

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

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

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