Introducere în Spring Data Redis

1. Prezentare generală

Acest articol este o introducere la Spring Data Redis , care oferă abstracții ale platformei Spring Data către Redis - popularul magazin de structuri de date în memorie.

Redis este condus de o structură de date bazată pe depozit de chei pentru a păstra datele și poate fi folosit ca bază de date, cache, broker de mesaje etc.

Vom putea folosi modelele comune ale datelor de primăvară (șabloane etc.), având în același timp simplitatea tradițională a tuturor proiectelor de date de primăvară.

2. Dependențele Maven

Să începem prin declararea dependențelor Spring Data Redis în pom.xml :

 org.springframework.data spring-data-redis 2.3.3.RELEASE   redis.clients jedis 3.3.0 jar 

Cele mai recente versiuni de spring-data-redis și jedis pot fi descărcate de la Maven Central.

Alternativ, putem folosi Spring Boot Starter pentru Redis, care va elimina necesitatea unor dependențe separate de date de primăvară și jedis :

 org.springframework.boot spring-boot-starter-data-redis 2.3.3.RELEASE 

Din nou, Maven central oferă informații despre ultima versiune.

3. Configurarea Redis

Pentru a defini setările de conexiune între clientul aplicației și instanța serverului Redis, trebuie să folosim un client Redis.

Există o serie de implementări client Redis disponibile pentru Java. În acest tutorial, vom folosi Jedis - o implementare simplă și puternică a clientului Redis .

Există un bun suport atât pentru configurația XML, cât și pentru Java în cadrul; pentru acest tutorial, vom folosi configurația bazată pe Java.

3.1. Configurare Java

Să începem cu definițiile bean de configurare:

@Bean JedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory(); } @Bean public RedisTemplate redisTemplate() { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(jedisConnectionFactory()); return template; } 

Configurarea este destul de simplă. Mai întâi, folosind clientul Jedis, definim o conexiuneFactory .

Apoi, am definit un RedisTemplate folosind jedisConnectionFactory. Aceasta poate fi utilizată pentru interogarea datelor cu un depozit personalizat.

3.2. Proprietăți de conexiune personalizate

Este posibil să fi observat deja că proprietățile obișnuite legate de conexiune lipsesc în configurația de mai sus. De exemplu, adresa serverului și portul lipsesc în configurație. Motivul este simplu: pentru exemplul nostru, folosim valorile implicite.

Cu toate acestea, dacă trebuie să configurăm detaliile conexiunii, putem modifica oricând configurația jedisConnectionFactory după cum urmează:

@Bean JedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(); jedisConFactory.setHostName("localhost"); jedisConFactory.setPort(6379); return jedisConFactory; }

4. Redis Repository

Să folosim o entitate student ca exemple:

@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. Depozitul de date de primăvară

Să creăm acum StudentRepository după cum urmează:

@Repository public interface StudentRepository extends CrudRepository {}

5. Acces la date folosind StudentRepository

Prin extinderea CrudRepository în StudentRepository , obținem automat un set complet de metode de persistență care realizează funcționalitatea CRUD.

5.1. Salvarea unui obiect student nou

Să salvăm un nou obiect student în magazinul de date:

Student student = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1); studentRepository.save(student);

5.2. Preluarea unui obiect student existent

Putem verifica inserarea corectă a studentului în secțiunea anterioară prin preluarea datelor despre student:

Student retrievedStudent = studentRepository.findById("Eng2015001").get();

5.3. Actualizarea unui obiect student existent

Să schimbăm numele studentului recuperat mai sus și să-l salvăm din nou:

retrievedStudent.setName("Richard Watson"); studentRepository.save(student);

În cele din urmă, putem prelua din nou datele elevului și putem verifica dacă numele este actualizat în magazinul de date.

5.4. Ștergerea unei date existente de student

Putem șterge datele elevilor inserate mai sus:

studentRepository.deleteById(student.getId());

Acum putem căuta obiectul student și putem verifica dacă rezultatul este nul .

5.5. Găsiți toate datele despre studenți

Putem insera câteva obiecte studențești:

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

Putem realiza acest lucru și prin inserarea unei colecții. Pentru aceasta, există o metodă diferită - saveAll () - care acceptă un singur obiect Iterable care conține mai multe obiecte student pe care dorim să le persistăm.

Pentru a găsi toți studenții inserați, putem folosi metoda findAll () :

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

Apoi, putem verifica rapid dimensiunea listei de studenți sau putem verifica dacă există o granularitate mai mare, verificând proprietățile fiecărui obiect.

6. Concluzie

În acest tutorial, am parcurs elementele de bază ale Spring Data Redis. Codul sursă al exemplelor de mai sus poate fi găsit într-un proiect GitHub.