Configurazione basata sulla proprietà di Spring Data Redis

1. Panoramica

Una delle principali attrazioni di Spring Boot è il modo in cui spesso riduce la configurazione di terze parti a poche proprietà.

In questo tutorial, vedremo come Spring Boot semplifica il lavoro con Redis.

2. Perché Redis?

Redis è uno dei più popolari archivi di strutture dati in memoria. Per questo motivo, può essere utilizzato come database, cache e broker di messaggi.

In termini di prestazioni, è ben noto per i suoi tempi di risposta rapidi. Di conseguenza, può servire centinaia di migliaia di operazioni al secondo ed è facilmente scalabile.

E si accoppia bene con le applicazioni Spring Boot . Ad esempio, possiamo usarlo come cache nella nostra architettura di microservizi. Possiamo anche usarlo come database NoSQL.

3. Esecuzione di Redis

Per iniziare, creiamo un'istanza Redis usando la loro immagine Docker ufficiale.

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

Sopra, abbiamo appena avviato un'istanza di Redis sulla porta 16379 con una password di mypass .

4. Starter

Spring ci offre un ottimo supporto per connettere le nostre applicazioni Spring Boot con Redis utilizzando Spring Data Redis.

Quindi, in seguito, assicuriamoci di avere la dipendenza spring-boot-starter-data-redis nel nostro pom.xml :

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

5. Lattuga

Successivamente, configuriamo il client.

Il client Java Redis che useremo è Lettuce poiché Spring Boot lo utilizza per impostazione predefinita. Tuttavia, avremmo potuto usare anche Jedis.

In ogni caso, il risultato è un'istanza di RedisTemplate :

@Bean public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(connectionFactory); // Add some specific configuration here. Key serializers, etc. return template; }

6. Proprietà

Quando usiamo Lettuce, non abbiamo bisogno di configurare RedisConnectionFactory. Spring Boot lo fa per noi.

Tutto ciò che ci resta, quindi, è specificare alcune proprietà nel nostro file application.properties :

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

Rispettivamente:

  • database imposta l'indice del database utilizzato dal factory di connessione
  • host è dove si trova l'host del server
  • porta indica la porta su cui il server è in ascolto
  • password è la password di accesso per il server e
  • timeout stabilisce il timeout di connessione

Naturalmente, ci sono molte altre proprietà che possiamo configurare. L'elenco completo delle proprietà di configurazione è disponibile nella documentazione di Spring Boot.

7. Demo

Infine, proviamo a usarlo nella nostra applicazione. Se immaginiamo una classe Book e un BookRepository, possiamo creare e recuperare i libri , utilizzando il nostro RedisTemplate per interagire con Redis come nostro backend:

@Autowired private RedisTemplate redisTemplate; public void save(Book book) { redisTemplate.opsForValue().set(book.getId(), book); } public Book findById(Long id) { return redisTemplate.opsForValue().get(id); }

Per impostazione predefinita, Lettuce gestirà la serializzazione e la deserializzazione per noi, quindi non c'è più niente da fare a questo punto. Tuttavia, è bene sapere che anche questo può essere configurato.

Un'altra caratteristica importante è poiché RedisTemplate è thread-safe , quindi funzionerà correttamente in ambienti multi-thread.

8. Conclusione

In questo articolo, abbiamo configurato Spring Boot per parlare con Redis tramite Lettuce. E l'abbiamo raggiunto con un antipasto, una singola configurazione @Bean e una manciata di proprietà.

Per concludere, abbiamo usato RedisTemplate per fare in modo che Redis agisse come un semplice backend.

L'esempio completo può essere trovato su GitHub.