- przegląd
- Maven Dependencies
- Konfiguracja Redis
- 3.1. Konfiguracja Javy
- 3.2. Niestandardowe właściwości połączenia
- repozytorium Redis
- 4.1. Wiosenne repozytorium danych
- dostęp do danych za pomocą StudentRepository
- 5.1. Zapisywanie nowego obiektu ucznia
- 5.2. Odzyskiwanie istniejącego obiektu ucznia
- 5.3. Aktualizacja istniejącego obiektu ucznia
- 5.4. Usunięcie istniejących danych ucznia
- 5.5. Znajdź wszystkie dane ucznia
- podsumowanie
przegląd
ten artykuł jest wprowadzeniem do Spring Data Redis, które dostarcza abstrakcji Spring Data platform do Redis – popularnego magazynu struktury danych w pamięci.
Redis jest napędzany przez strukturę danych opartą na keystore do przechowywania danych i może być używany jako baza danych, Pamięć podręczna, broker wiadomości itp.
będziemy mogli korzystać ze wspólnych wzorców danych Spring (szablony itp.), przy jednoczesnym zachowaniu tradycyjnej prostoty wszystkich projektów Spring Data.
Maven Dependencies
Zacznijmy od zadeklarowania Spring Data Redis dependencies w pom.xml:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>2.3.3.RELEASE</version> </dependency><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3.0</version> <type>jar</type></dependency>
najnowsze wersje spring-data-redis i jedis można pobrać z Maven Central.
alternatywnie możemy użyć Spring Boot starter dla Redis, co wyeliminuje potrzebę osobnych zależności spring-data i jedis:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.3.3.RELEASE</version></dependency>
ponownie, Maven central oferuje najnowsze informacje o wersji.
Konfiguracja Redis
aby zdefiniować ustawienia połączenia między Klientem aplikacji a instancją serwera Redis, musimy użyć klienta Redis.
istnieje wiele implementacji klienta Redis dostępnych dla środowiska Java. W tym samouczku użyjemy Jedis-prostej i potężnej implementacji klienta Redis.
istnieje dobre wsparcie dla konfiguracji XML i Java w ramach; w tym samouczku użyjemy konfiguracji opartej na Javie.
3.1. Konfiguracja Javy
Zacznijmy od definicji konfiguracji:
@BeanJedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory();}@Beanpublic RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); return template;}
konfiguracja jest dość prosta. Po pierwsze, używając klienta Jedis, definiujemy fabrykę połączeń.
następnie zdefiniowaliśmy szablon RedisTemplate używając fabryki jedisConnectionFactory. Może to być użyte do odpytywania danych za pomocą niestandardowego repozytorium.
3.2. Niestandardowe właściwości połączenia
być może zauważyłeś już, że w powyższej konfiguracji brakuje zwykłych właściwości związanych z połączeniem. Na przykład w konfiguracji brakuje adresu i portu serwera. Powód jest prosty: dla naszego przykładu używamy wartości domyślnych.
jednak, jeśli musimy skonfigurować szczegóły połączenia, zawsze możemy zmodyfikować konfigurację jedisConnectionFactory w następujący sposób:
@BeanJedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(); jedisConFactory.setHostName("localhost"); jedisConFactory.setPort(6379); return jedisConFactory;}
repozytorium Redis
użyjmy jednostki ucznia jako naszych przykładów:
@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. Wiosenne repozytorium danych
stwórzmy teraz StudentRepository w następujący sposób:
@Repositorypublic interface StudentRepository extends CrudRepository<Student, String> {}
dostęp do danych za pomocą StudentRepository
rozszerzając CrudRepository w StudentRepository, automatycznie otrzymujemy kompletny zestaw metod trwałości, które wykonują funkcje CRUD.
5.1. Zapisywanie nowego obiektu ucznia
zapisujemy nowy obiekt ucznia w magazynie danych:
Student student = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1);studentRepository.save(student);
5.2. Odzyskiwanie istniejącego obiektu ucznia
możemy zweryfikować poprawne wstawianie ucznia w poprzedniej sekcji, pobierając dane ucznia:
Student retrievedStudent = studentRepository.findById("Eng2015001").get();
5.3. Aktualizacja istniejącego obiektu ucznia
zmieńmy nazwę ucznia pobranego powyżej i zapiszmy go ponownie:
retrievedStudent.setName("Richard Watson");studentRepository.save(student);
na koniec możemy ponownie pobrać dane ucznia i zweryfikować, czy nazwa jest aktualizowana w magazynie danych.
5.4. Usunięcie istniejących danych ucznia
możemy usunąć wyżej wstawione dane ucznia:
studentRepository.deleteById(student.getId());
teraz możemy wyszukać obiekt student i sprawdzić, czy wynik jest null.
5.5. Znajdź wszystkie dane ucznia
możemy wstawić kilka obiektów ucznia:
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);
możemy to również osiągnąć poprzez wstawienie kolekcji. W tym celu istnieje inna metoda-saveAll () – która akceptuje pojedynczy obiekt iteracyjny zawierający wiele obiektów studenckich, które chcemy utrzymywać.
aby znaleźć wszystkich wstawionych uczniów, możemy użyć metody findAll() :
List<Student> students = new ArrayList<>();studentRepository.findAll().forEach(students::add);
wtedy możemy szybko sprawdzić rozmiar listy uczniów lub zweryfikować większą szczegółowość, sprawdzając właściwości każdego obiektu.