Introduksjon Til Spring data Redis

Oversikt

denne artikkelen er en introduksjon Til Spring Data Redis, som gir abstraksjoner Av Spring data platform Til Redis-den populære in-memory datastruktur butikken.

Redis drives av en keystore – basert datastruktur for å fortsette data og kan brukes som database, cache, meldingsmegler, etc.

Vi kan bruke de vanlige mønstrene For Vårdata (maler, etc.), samtidig som du har den tradisjonelle enkelheten til Alle Vårdataprosjekter.

Maven Avhengigheter

La oss starte med å erklære Våren Data Redis avhengigheter i 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>

de nyeste versjonene av spring-data-redis og jedis kan lastes ned fra Maven Central.

Alternativt kan Vi bruke Spring Boot starteren For Redis, som vil eliminere behovet for separate fjærdata og jedis-avhengigheter:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.3.3.RELEASE</version></dependency>

Igjen, Maven central tilbyr den nyeste versjonen informasjon.

Redis-Konfigurasjonen

for å definere tilkoblingsinnstillingene mellom programklienten og redis-serverforekomsten, må Vi bruke En Redis-klient.

Det finnes En rekke Redis klient implementeringer tilgjengelig For Java. I denne opplæringen bruker Vi Jedis – en enkel Og kraftig Redis – klientimplementering.

det er god støtte for BÅDE XML-og Java-konfigurasjon i rammen; for denne opplæringen bruker Vi Java-basert konfigurasjon.

3.1. Java-Konfigurasjon

La oss starte med konfigurasjonsbønnedefinisjonene:

@BeanJedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory();}@Beanpublic RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); return template;}

konfigurasjonen er ganske enkel. Først, ved Hjelp Av jedis-klienten, definerer Vi en connectionFactory.

deretter definerte vi En RedisTemplate ved hjelp av jedisConnectionFactory. Dette kan brukes for spørring av data med en tilpasset repository.

3.2. Egendefinerte Tilkoblingsegenskaper

Du har kanskje allerede lagt merke til at de vanlige tilkoblingsrelaterte egenskapene mangler i konfigurasjonen ovenfor. For eksempel mangler serveradressen og porten i konfigurasjonen. Årsaken er enkel: for vårt eksempel bruker vi standardverdiene.

men hvis vi trenger å konfigurere tilkoblingsdetaljene, kan vi alltid endre jedisconnectionfactory-konfigurasjonen som følger:

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

Redis Repository

La oss bruke En Student enhet for våre eksempler:

@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 Data Repository

La oss nå lage StudentRepository som følger:

@Repositorypublic interface StudentRepository extends CrudRepository<Student, String> {}

Datatilgang Ved Hjelp Av StudentRepository

ved å utvide CrudRepository I StudentRepository, får vi automatisk et komplett sett med persistensmetoder som utfører CRUD-funksjonalitet.

5.1. Lagre Et Nytt Studentobjekt

la oss lagre et nytt studentobjekt i datalageret:

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

5.2. Hente Et Eksisterende Studentobjekt

vi kan verifisere korrekt innsetting av studenten i forrige seksjon ved å hente studentdataene:

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

5.3. Oppdatere Et Eksisterende Studentobjekt

la oss endre navnet på studenten som er hentet ovenfor, og lagre det på nytt:

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

Til slutt kan vi hente studentens data igjen og verifisere at navnet er oppdatert i datalageret.

5.4. Slette Eksisterende Studentdata

vi kan slette de ovennevnte studentdataene:

studentRepository.deleteById(student.getId());

Nå kan vi søke etter studentobjektet og verifisere at resultatet er null.

5.5. Finn Alle Studentdata

Vi kan sette inn noen studentobjekter:

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

Vi kan også oppnå dette ved å sette inn en samling. For det er det en annen metode – saveAll () – som aksepterer et Enkelt Iterbart objekt som inneholder flere studentobjekter som vi vil fortsette.

for å finne alle innsatte studenter, kan vi bruke findAll () – metoden:

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

da kan vi raskt sjekke størrelsen på studentlisten eller verifisere for større granularitet ved å sjekke egenskapene til hvert objekt.

Konklusjon



+