- overzicht
- Maven afhankelijkheden
- de Redis-configuratie
- 3.1. Java configuratie
- 3.2. Aangepaste verbindingseigenschappen
- Redis Repository
- 4.1. The Spring Data Repository
- toegang tot gegevens met behulp van StudentRepository
- 5.1. Opslaan van een nieuw Studentenobject
- 5.2. Ophalen van een bestaand Studentenobject
- 5.3. Een bestaand Studentenobject
- 5.4. Bestaande studentengegevens verwijderen
- 5.5. Zoek Alle studentengegevens
- conclusie
overzicht
dit artikel is een inleiding tot Spring Data Redis, die de abstracties van het Spring Data platform aan Redis – de populaire in-memory data structure store.
Redis wordt aangestuurd door een op keystore gebaseerde gegevensstructuur om gegevens te behouden en kan worden gebruikt als een database, cache, message broker, enz.
we kunnen de gemeenschappelijke patronen van Voorjaarsgegevens (sjablonen, enz.), terwijl ook met de traditionele eenvoud van alle voorjaar data projecten.
Maven afhankelijkheden
laten we beginnen met het declareren van de lente data Redis afhankelijkheden in de 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 nieuwste versies van spring-data-redis en jedis kunnen worden gedownload van Maven Central.
als alternatief kunnen we de Spring Boot starter gebruiken voor Redis, wat de noodzaak voor aparte spring-data en jedis afhankelijkheden elimineert:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.3.3.RELEASE</version></dependency>
nogmaals, Maven central biedt de nieuwste versie informatie.
de Redis-configuratie
om de verbindingsinstellingen tussen de toepassing-client en de Redis-serverinstantie te definiëren, moeten we een Redis-client gebruiken.
er is een aantal Redis client implementaties beschikbaar voor Java. In deze tutorial gebruiken we Jedis – een eenvoudige en krachtige Redis client implementatie.
er is goede ondersteuning voor zowel XML-als Java-configuratie in het framework; voor deze tutorial gebruiken we Java – gebaseerde configuratie.
3.1. Java configuratie
laten we beginnen met de configuratie bean definities:
@BeanJedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory();}@Beanpublic RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); return template;}
de configuratie is vrij eenvoudig. Eerst, met behulp van de Jedis client, definiëren we een connectionFactory.
vervolgens definieerden we een herindeling met behulp van de jedisConnectionFactory. Dit kan worden gebruikt voor het opvragen van gegevens met een aangepaste repository.
3.2. Aangepaste verbindingseigenschappen
u hebt misschien al gemerkt dat de gebruikelijke verbindingsgerelateerde eigenschappen ontbreken in de bovenstaande configuratie. Het serveradres en de poort ontbreken bijvoorbeeld in de configuratie. De reden is simpel: voor ons voorbeeld gebruiken we de standaardwaarden.
echter, als we de verbindingsdetails moeten configureren, kunnen we de configuratie van jedisConnectionFactory altijd als volgt wijzigen:
@BeanJedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(); jedisConFactory.setHostName("localhost"); jedisConFactory.setPort(6379); return jedisConFactory;}
Redis Repository
laten we een Studentenentiteit gebruiken voor onze voorbeelden:
@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. The Spring Data Repository
laten we nu het Studentenrepository als volgt maken:
@Repositorypublic interface StudentRepository extends CrudRepository<Student, String> {}
toegang tot gegevens met behulp van StudentRepository
door het uitbreiden van CrudRepository in StudentRepository, krijgen we automatisch een complete set van persistentiemethoden die CRUD functionaliteit uitvoeren.
5.1. Opslaan van een nieuw Studentenobject
laten we een nieuw studentenobject opslaan in de gegevensopslag:
Student student = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1);studentRepository.save(student);
5.2. Ophalen van een bestaand Studentenobject
we kunnen de juiste invoeging van de student in de vorige sectie verifiëren door de studentengegevens op te halen:
Student retrievedStudent = studentRepository.findById("Eng2015001").get();
5.3. Een bestaand Studentenobject
bijwerken laten we de naam van de hierboven opgehaalde student wijzigen en opnieuw opslaan:
retrievedStudent.setName("Richard Watson");studentRepository.save(student);
tot slot kunnen we de gegevens van de student opnieuw ophalen en controleren of de naam is bijgewerkt in de datastore.
5.4. Bestaande studentengegevens verwijderen
we kunnen de hierboven ingevoegde studentengegevens verwijderen:
studentRepository.deleteById(student.getId());
nu kunnen we zoeken naar de student object en controleren of het resultaat is null.
5.5. Zoek Alle studentengegevens
we kunnen enkele studentenobjecten invoegen:
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);
dit kunnen we ook bereiken door een collectie in te voegen. Daarvoor is er een andere methode – saveAll() – die een enkel Herhalbaar object accepteert dat meerdere studentenobjecten bevat die we willen aanhouden.
om alle ingevoegde studenten te vinden, kunnen we de methode findAll() gebruiken:
List<Student> students = new ArrayList<>();studentRepository.findAll().forEach(students::add);
dan kunnen we snel de grootte van de studentenlijst controleren of controleren op een grotere granulariteit door de eigenschappen van elk object te controleren.