De eigenschapgebaseerde configuratie van Spring Data Redis

1. Overzicht

Een van de belangrijkste voordelen van Spring Boot is hoe het vaak de configuratie van derden reduceert tot slechts een paar eigenschappen.

In deze tutorial gaan we zien hoe Spring Boot vereenvoudigt het werken met Redis.

2. Waarom Redis?

Redis is een van de meest populaire datastructuren in het geheugen. Om deze reden kan het worden gebruikt als database, cache en message broker.

Qua prestaties staat het bekend om zijn snelle responstijd. Het resultaat is dat het honderdduizenden bewerkingen per seconde kan uitvoeren en gemakkelijk schaalbaar is.

En het past goed bij Spring Boot-applicaties. We kunnen het bijvoorbeeld gebruiken als een cache in onze microservices-architectuur. We kunnen het ook gebruiken als een NoSQL-database.

3. Redis uitvoeren

Laten we om te beginnen een Redis-instantie maken met hun officiële Docker-image.

$ docker run -p 16379: 6379 -d redis: 6.0 redis-server --requirepass "mypass"

Hierboven hebben we zojuist een instantie van Redis op poort gestart 16379 met een wachtwoord van mijnpas.

4. Voorgerecht

Spring biedt ons geweldige ondersteuning voor het verbinden van onze Spring Boot-applicaties met Redis met behulp van Spring Data Redis.

Laten we er vervolgens voor zorgen dat we de spring-boot-starter-data-redis afhankelijkheid in onze pom.xml:

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

5. Sla

Laten we vervolgens de client configureren.

De Java Redis-client we gebruiken is Lettuce omdat Spring Boot het standaard gebruikt. We hadden echter ook Jedis kunnen gebruiken.

Hoe dan ook, het resultaat is een instantie van RedisTemplate:

@Bean openbare RedisTemplate redisTemplate (RedisConnectionFactory connectionFactory) {RedisTemplate-sjabloon = nieuwe RedisTemplate (); template.setConnectionFactory (connectionFactory); // Voeg hier een specifieke configuratie toe. Key serializers, enz. Retoursjabloon; }

6. Eigenschappen

Als we Lettuce gebruiken, hoeven we de RedisConnectionFactory. Spring Boot doet het voor ons.

Het enige dat we nog hebben, is om een ​​paar eigenschappen op te geven in onze application.properties het dossier:

spring.redis.database = 0 spring.redis.host = localhost spring.redis.port = 16379 spring.redis.password = mypass spring.redis.timeout = 60000

Respectievelijk:

  • database stelt de database-index in die wordt gebruikt door de verbindingsfabriek
  • gastheer is waar de serverhost zich bevindt
  • haven geeft de poort aan waar de server naar luistert
  • wachtwoord is het inlogwachtwoord voor de server, en
  • time-out stelt de time-out voor de verbinding in

Natuurlijk zijn er nog veel andere eigenschappen die we kunnen configureren. De volledige lijst met configuratie-eigenschappen is beschikbaar in de Spring Boot-documentatie.

7. Demo

Laten we tot slot proberen het in onze applicatie te gebruiken. Als we ons een Boek klasse en een Boekopslagplaats, we kunnen maken en ophalen Boeks, met behulp van onze RedisTemplate om te communiceren met Redis als onze backend:

@Autowired privé RedisTemplate redisTemplate; openbare leegte opslaan (boek boek) {redisTemplate.opsForValue (). set (book.getId (), boek); } openbaar boek findById (lange id) {retourneer redisTemplate.opsForValue (). get (id); }

Standaard beheert Lettuce de serialisering en deserialisatie voor ons, dus er is op dit moment niets meer te doen. Het is echter goed om te weten dat dit ook geconfigureerd kan worden.

Een ander belangrijk kenmerk is sinds RedisTemplateis draadveilig, dus het werkt correct in omgevingen met meerdere threads.

8. Conclusie

In dit artikel hebben we Spring Boot geconfigureerd om via Lettuce met Redis te praten. En we hebben het bereikt met een starter, een single @Boon configuratie en een handvol eigenschappen.

Om af te ronden, gebruikten we de RedisTemplate om Redis te laten fungeren als een eenvoudige backend.

Het volledige voorbeeld is te vinden op GitHub.