- oversigt
- Maven afhængigheder
- Redis-konfigurationen
- 3.1. Java-konfiguration
- 3.2. Brugerdefinerede forbindelsesegenskaber
- Redis Repository
- 4.1. Spring Data Repository
- dataadgang ved hjælp af StudentRepository
- 5.1. Gemme et nyt Elevobjekt
- 5.2. Hentning af et eksisterende Elevobjekt
- 5.3. Opdatering af et eksisterende Elevobjekt
- 5.4. Sletning af eksisterende elevdata
- 5.5. Find alle elevdata
- konklusion
oversigt
denne artikel er en introduktion til Spring Data Redis, som giver abstraktionerne af Spring Data platform til Redis – den populære in-memory datastruktur butik.
Redis drives af en keystore-baseret datastruktur for at fortsætte data og kan bruges som database, cache, meddelelsesmægler osv.
vi vil være i stand til at bruge de fælles mønstre af foråret Data (skabeloner, etc.), samtidig med at den traditionelle enkelhed i alle Forårsdataprojekter.
Maven afhængigheder
lad os starte med at erklære foråret data Redis afhængigheder i pom.kml:
<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 versioner af spring-data-redis og jedis kan hentes fra Maven Central.
Alternativt kan vi bruge Spring Boot starter til Redis, som eliminerer behovet for separate spring-data og jedis afhængigheder:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.3.3.RELEASE</version></dependency>
igen tilbyder Maven central de nyeste versionsoplysninger.
Redis-konfigurationen
for at definere forbindelsesindstillingerne mellem applikationsklienten og Redis-serverforekomsten skal vi bruge en Redis-klient.
der er en række Redis klient implementeringer til rådighed for Java. I denne tutorial bruger vi Jedis-en enkel og kraftfuld Redis-klientimplementering.
der er god support til både Java-konfiguration og Java-konfiguration i rammen; til denne tutorial bruger vi Java-baseret konfiguration.
3.1. Java-konfiguration
lad os starte med konfigurationsbønnedefinitionerne:
@BeanJedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory();}@Beanpublic RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); return template;}
konfigurationen er ret simpel. Først ved hjælp af Jedis-klienten definerer vi en connectionFactory.
derefter definerede vi en RedisTemplate ved hjælp af jedisConnectionFactory. Dette kan bruges til at forespørge data med en brugerdefineret repository.
3.2. Brugerdefinerede forbindelsesegenskaber
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: for vores eksempel bruger vi standardindstillingerne.
men hvis vi har brug for at konfigurere forbindelsesdetaljerne, kan vi altid ændre jedisconnectionfactory-konfigurationen som følger:
@BeanJedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(); jedisConFactory.setHostName("localhost"); jedisConFactory.setPort(6379); return jedisConFactory;}
Redis Repository
lad os bruge en Studenterenhed til vores 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
lad os nu oprette StudentRepository som følger:
@Repositorypublic interface StudentRepository extends CrudRepository<Student, String> {}
dataadgang ved hjælp af StudentRepository
ved at udvide CrudRepository i StudentRepository får vi automatisk et komplet sæt persistensmetoder, der udfører CRUD-funktionalitet.
5.1. Gemme et nyt Elevobjekt
lad os gemme et nyt elevobjekt i datalageret:
Student student = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1);studentRepository.save(student);
5.2. Hentning af 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(student);
endelig kan vi hente den studerendes data igen og kontrollere, at navnet er opdateret i datalageret.
5.4. Sletning af eksisterende elevdata
vi kan slette de ovenfor indsatte elevdata:
studentRepository.deleteById(student.getId());
nu kan vi søge efter elevobjektet og kontrollere, at resultatet er null.
5.5. Find alle elevdata
vi kan indsætte et par elevobjekter:
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å opnå dette ved at indsætte en samling. Til det er der en anden metode – saveAll() – som accepterer et enkelt Iterabelt objekt, der indeholder flere elevobjekter, som vi vil fortsætte.
for at finde alle indsatte studerende kan vi bruge findAll () – metoden:
List<Student> students = new ArrayList<>();studentRepository.findAll().forEach(students::add);
så kan vi hurtigt kontrollere størrelsen på elevernes liste eller kontrollere for en større granularitet ved at kontrollere egenskaberne for hvert objekt.