Introduksjon til Spring Data Redis

1. Oversikt

Denne artikkelen er en introduksjon til Spring Data Redis, som gir abstraksjonene til Spring Data-plattformen til Redis - den populære datastrukturbutikken i minnet.

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

Vi vil kunne bruke de vanlige mønstrene til Spring Data (maler osv.), Samtidig som vi har den tradisjonelle enkelheten til alle Spring Data-prosjekter.

2. Maven-avhengigheter

La oss starte med å erklære Spring Data Redis avhengigheter i pom.xml:

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

De siste versjonene av vår-data-redis og jedis kan lastes ned fra Maven Central.

Alternativt kan vi bruke Spring Boot starter for Redis, noe som vil eliminere behovet for separat vår-data og jedis avhengigheter:

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

Igjen tilbyr Maven central den nyeste versjonsinformasjonen.

3. Redis-konfigurasjonen

For å definere tilkoblingsinnstillingene mellom applikasjonsklienten og Redis-serverinstansen, må vi bruke en Redis-klient.

Det er en rekke Redis-klientimplementeringer tilgjengelig for Java. I denne veiledningen, vi bruker Jedis - en enkel og kraftig Redis-klientimplementering.

Det er god støtte for både XML- og Java-konfigurasjon i rammeverket; for denne opplæringen bruker vi Java-basert konfigurasjon.

3.1. Java-konfigurasjon

La oss starte med definisjonene av konfigurasjonsbønner:

@Bean JedisConnectionFactory jedisConnectionFactory () {returner nye JedisConnectionFactory (); } @Bean offentlig RedisTemplate redisTemplate () {RedisTemplate mal = ny RedisTemplate (); template.setConnectionFactory (jedisConnectionFactory ()); returmal; } 

Konfigurasjonen er ganske enkel. Først, ved hjelp av Jedis-klienten, definerer vi en tilkoblingsfabrikk.

Deretter definerte vi a RedisTemplate bruker jedisConnectionFactory. Dette kan brukes til å spørre data med et tilpasset depot.

3.2. Egendefinerte tilkoblingsegenskaper

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

Men hvis vi trenger å konfigurere tilkoblingsdetaljene, kan vi alltid endre jedisConnectionFactory konfigurasjon som følger:

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

4. Redis Repository

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

@RedisHash ("Student") offentlig klasse Studentimplement Serialiserbar {offentlig enum Kjønn {MALE, KVINNE} privat streng-ID; privat strengnavn; privat Kjønn kjønn; privat int klasse; // ...}

4.1. Vårens datalager

La oss nå lage StudentRepository som følger:

@Repository offentlig grensesnitt StudentRepository utvider CrudRepository {}

5. Datatilgang ved hjelp StudentRepository

Ved å utvide CrudRepository i StudentRepository, får vi automatisk et komplett sett med utholdenhetsmetoder som utfører CRUD-funksjonalitet.

5.1. Lagre et nytt studentobjekt

La oss lagre et nytt studentobjekt i datalageret:

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

5.2. Henter et eksisterende studentobjekt

Vi kan verifisere riktig innsetting av studenten i forrige avsnitt ved å hente studentdataene:

Student hentetStudent = studentRepository.findById ("Eng2015001"). Get ();

5.3. Oppdatere et eksisterende studentobjekt

La oss endre navnet på studenten som er hentet ovenfor og lagre det igjen:

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 data

Vi kan slette de ovennevnte studentdataene:

studentRepository.deleteById (student.getId ());

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

5.5. Finn alle studentdata

Vi kan sette inn noen få studentobjekter:

Student engStudent = ny student ("Eng2015001", "John Doe", Student.Gender.MALE, 1); Student medStudent = ny 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 - lagre alt() - som godtar en singel Iterabel objekt som inneholder flere studentobjekter som vi ønsker å vedvare.

For å finne alle studenter som er satt inn, kan vi bruke findAll () metode:

Liste studenter = ny ArrayList (); studentRepository.findAll (). forEach (students :: add);

Da kan vi raskt sjekke størrelsen på studenter liste opp eller verifiser for større granularitet ved å sjekke egenskapene til hvert objekt.

6. Konklusjon

I denne opplæringen gikk vi gjennom det grunnleggende om Spring Data Redis. Kildekoden til eksemplene ovenfor kan bli funnet i et GitHub-prosjekt.


$config[zx-auto] not found$config[zx-overlay] not found