Inleiding tot Spring Data Redis

1. Overzicht

Dit artikel is een inleiding tot Spring Data Redis, dat de abstracties van het Spring Data-platform levert aan Redis - het populaire in-memory datastructuurarchief.

Redis wordt aangestuurd door een keystore-gebaseerde datastructuur om data te bewaren en kan worden gebruikt als database, cache, message broker, etc.

We zullen in staat zijn om de gemeenschappelijke patronen van Spring Data (sjablonen, etc.) te gebruiken, terwijl we ook de traditionele eenvoud van alle Spring Data-projecten hebben.

2. Maven afhankelijkheden

Laten we beginnen met het declareren van de Spring Data Redis-afhankelijkheden in het pom.xml:

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

De nieuwste versies van spring-data-redis en jedis kan worden gedownload van Maven Central.

Als alternatief kunnen we de Spring Boot-starter voor Redis gebruiken, waardoor er geen aparte spring-data en jedis afhankelijkheden:

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

Nogmaals, Maven Central biedt de nieuwste versie-informatie.

3. De Redis-configuratie

Om de verbindingsinstellingen tussen de toepassingsclient en de Redis-serverinstantie te definiëren, hebben we een Redis-client nodig.

Er is een aantal Redis-clientimplementaties beschikbaar voor Java. In deze tutorial we zullen Jedis gebruiken - een eenvoudige en krachtige Redis-clientimplementatie.

Er is goede ondersteuning voor zowel XML- als Java-configuratie in het framework; voor deze zelfstudie gebruiken we op Java gebaseerde configuratie.

3.1. Java-configuratie

Laten we beginnen met de definities van configuratiebonen:

@Bean JedisConnectionFactory jedisConnectionFactory () {retourneer nieuwe JedisConnectionFactory (); } @Bean openbare RedisTemplate redisTemplate () {RedisTemplate-sjabloon = nieuwe RedisTemplate (); template.setConnectionFactory (jedisConnectionFactory ()); retour sjabloon; } 

De configuratie is vrij eenvoudig. Ten eerste definiëren we met behulp van de Jedis-client een connectionFactory.

Vervolgens hebben we een RedisTemplate de ... gebruiken jedisConnectionFactory. Dit kan worden gebruikt voor het opvragen van gegevens met een aangepaste opslagplaats.

3.2. Aangepaste verbindingseigenschappen

Het is u wellicht al opgevallen dat de gebruikelijke verbindinggerelateerde 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 standaardinstellingen.

Als we de verbindingsdetails echter moeten configureren, kunnen we altijd het jedisConnectionFactory configuratie als volgt:

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

4. Redis-opslagplaats

Laten we een Leerling entiteit voor onze voorbeelden:

@RedisHash ("Student") openbare klas Student implementeert Serializable {public enum Gender {MALE, FEMALE} privé String-id; private String naam; privé Geslacht geslacht; privé int rang; // ...}

4.1. De Spring Data Repository

Laten we nu het StudentRepository als volgt:

@Repository openbare interface StudentRepository breidt CrudRepository uit {}

5. Gegevenstoegang met behulp van StudentRepository

Door uit te breiden CrudRepository in StudentRepository, krijgen we automatisch een complete set persistentiemethoden die CRUD-functionaliteit uitvoeren.

5.1. Een nieuw leerlingobject opslaan

Laten we een nieuw studentobject opslaan in de datastore:

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

5.2. Een bestaand leerlingobject ophalen

We kunnen de correcte invoeging van de leerling in de vorige sectie verifiëren door de leerlinggegevens op te halen:

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

5.3. Een bestaand leerlingobject bijwerken

Laten we de naam van de hierboven opgehaalde leerling wijzigen en opnieuw opslaan:

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

Ten slotte kunnen we de gegevens van de student opnieuw ophalen en controleren of de naam is bijgewerkt in de datastore.

5.4. Bestaande leerlinggegevens verwijderen

We kunnen de hierboven ingevoegde studentgegevens verwijderen:

studentRepository.deleteById (student.getId ());

Nu kunnen we naar het studentobject zoeken en controleren of het resultaat is nul.

5.5. Vind alle leerlinggegevens

We kunnen een paar studentobjecten invoegen:

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

Dit kunnen we ook bereiken door een collectie in te brengen. Daarvoor is er een andere methode - sla alles op() - die een enkele accepteert Herhaalbaar object met meerdere studentobjecten die we willen behouden.

Om alle ingevoegde studenten te vinden, kunnen we de vind alle() methode:

List students = new ArrayList (); studentRepository.findAll (). forEach (studenten :: toevoegen);

Dan kunnen we snel de maat van de studenten lijst of verifieer voor een grotere granulariteit door de eigenschappen van elk object te controleren.

6. Conclusie

In deze tutorial hebben we de basisprincipes van Spring Data Redis doorgenomen. De broncode van de bovenstaande voorbeelden is te vinden in een GitHub-project.