Introduktion til Spring Data Redis

1. Oversigt

Denne artikel er en introduktion til Spring Data Redis, som leverer abstraktionerne af Spring Data-platformen til Redis - den populære datastrukturbutik i hukommelsen.

Redis drives af en keystore-baseret datastruktur til at vedvare data og kan bruges som en database, cache, meddelelsesmægler osv.

Vi vil være i stand til at bruge de fælles mønstre af Spring Data (skabeloner osv.), Samtidig med at vi har den traditionelle enkelhed i alle Spring Data-projekter.

2. Maven-afhængigheder

Lad os starte med at erklære Spring Data Redis afhængigheder i pom.xml:

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

De nyeste versioner af spring-data-redis og jedis kan downloades fra Maven Central.

Alternativt kan vi bruge Spring Boot starter til Redis, hvilket eliminerer behovet for separat fjeder-data og jedis afhængigheder:

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

Igen tilbyder Maven central de nyeste versionoplysninger.

3. Redis-konfigurationen

For at definere forbindelsesindstillingerne mellem applikationsklienten og Redis-serverinstansen er vi nødt til at bruge en Redis-klient.

Der er et antal Redis-klientimplementeringer til rådighed for Java. I denne vejledning vi bruger Jedis - en enkel og effektiv Redis-klientimplementering.

Der er god support til både XML- og Java-konfiguration i rammen; til denne tutorial bruger vi Java-baseret konfiguration.

3.1. Java-konfiguration

Lad os starte med konfigurationsbønnedefinitionerne:

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

Konfigurationen er ret enkel. For det første definerer vi ved hjælp af Jedis-klienten en forbindelse Fabrik.

Derefter definerede vi en RedisTemplate bruger jedisConnectionFactory. Dette kan bruges til forespørgsel på data med et brugerdefineret lager.

3.2. Egenskaber for brugerdefineret forbindelse

Du har måske allerede bemærket, at de sædvanlige forbindelsesrelaterede egenskaber mangler i ovenstående konfiguration. For eksempel mangler serveradressen og porten i konfigurationen. Årsagen er enkel: til vores eksempel bruger vi standardindstillingerne.

Men hvis vi har brug for at konfigurere forbindelsesoplysningerne, kan vi altid ændre jedisConnectionFactory konfiguration som følger:

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

4. Redis-arkiv

Lad os bruge en Studerende enhed til vores eksempler:

@RedisHash ("Student") offentlig klasse Elevimplementer Serialiserbar {offentlig enum Køn {MALE, KVINNE} privat String-id; privat strengnavn; privat køn; privat int klasse; // ...}

4.1. Spring Data Repository

Lad os nu oprette Studenteropbevaring som følger:

@Repository offentlig grænseflade StudentRepository udvider CrudRepository {}

5. Dataadgang ved hjælp Studenteropbevaring

Ved at udvide CrudRepository i Studenteropbevaring, får vi automatisk et komplet sæt persistensmetoder, der udfører CRUD-funktionalitet.

5.1. Gemme et nyt studenterobjekt

Lad os gemme et nyt elevobjekt i datalageret:

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

5.2. Henter et eksisterende elevobjekt

Vi kan verificere den korrekte indsættelse af den studerende i det foregående afsnit ved at hente elevdataene:

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

5.3. Opdatering af et eksisterende elevobjekt

Lad os ændre navnet på den studerende, der er hentet ovenfor, og gemme det igen:

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

Endelig kan vi hente de studerendes data igen og kontrollere, at navnet opdateres i datalageret.

5.4. Sletning af eksisterende elevdata

Vi kan slette ovenstående studerende data:

studentRepository.deleteById (student.getId ());

Nu kan vi søge efter elevobjektet og kontrollere, at resultatet er nul.

5.5. Find alle elevdata

Vi kan indsætte et par studenterobjekter:

Student engStudent = ny studerende ("Eng2015001", "John Doe", Student.Gender.MALE, 1); Student medStudent = ny studerende ("Med2015001", "Gareth Houston", Student.Gender.MALE, 2); studentRepository.save (engStudent); studentRepository.save (medStudent);

Vi kan også opnå dette ved at indsætte en samling. Til det er der en anden metode - Gem alle() - som accepterer en enkelt Iterabel objekt, der indeholder flere elevobjekter, som vi vil have vedvarende.

For at finde alle indsatte studerende kan vi bruge findAll () metode:

Liste studerende = ny ArrayList (); studentRepository.findAll (). forEach (studerende :: tilføj);

Så kan vi hurtigt kontrollere størrelsen på studerende liste eller verificere for større granularitet ved at kontrollere egenskaberne for hvert objekt.

6. Konklusion

I denne vejledning gik vi gennem det grundlæggende i Spring Data Redis. Kildekoden til eksemplerne ovenfor kan findes i et GitHub-projekt.