- Panoramica
- Dipendenze Maven
- La configurazione Redis
- 3.1. Configurazione Java
- 3.2. Proprietà di connessione personalizzate
- Redis Repository
- 4.1. Il repository di dati Spring
- Accesso ai dati utilizzando StudentRepository
- 5.1. Salvataggio di un nuovo oggetto Student
- 5.2. Recupero di un Oggetto Studente esistente
- 5.3. Aggiornamento di un oggetto Studente esistente
- 5.4. Eliminazione dei dati degli studenti esistenti
- 5.5. Trova tutti i dati degli studenti
- Conclusione
Panoramica
Questo articolo è un’introduzione a Spring Data Redis, che fornisce le astrazioni della piattaforma Spring Data a Redis, il popolare archivio di strutture dati in memoria.
Redis è guidato da una struttura dati basata su keystore per mantenere i dati e può essere utilizzato come database, cache, broker di messaggi, ecc.
Saremo in grado di utilizzare i modelli comuni dei dati di Primavera(modelli, ecc.), pur avendo la tradizionale semplicità di tutti i progetti Spring Data.
Dipendenze Maven
Iniziamo dichiarando le dipendenze Spring Data Redis nel 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>
Le ultime versioni di spring-data-redis e jedis possono essere scaricate da Maven Central.
In alternativa, possiamo utilizzare Spring Boot starter per Redis, che eliminerà la necessità di dipendenze separate spring-data e jedis:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.3.3.RELEASE</version></dependency>
Ancora una volta, Maven central offre le ultime informazioni sulla versione.
La configurazione Redis
Per definire le impostazioni di connessione tra il client dell’applicazione e l’istanza del server Redis, è necessario utilizzare un client Redis.
C’è un certo numero di implementazioni client Redis disponibili per Java. In questo tutorial, useremo Jedis – un’implementazione client Redis semplice e potente.
C’è un buon supporto per la configurazione XML e Java nel framework; per questo tutorial, useremo la configurazione basata su Java.
3.1. Configurazione Java
Iniziamo con le definizioni del bean di configurazione:
@BeanJedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory();}@Beanpublic RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); return template;}
La configurazione è abbastanza semplice. Innanzitutto, utilizzando il client Jedis, stiamo definendo una connectionFactory.
Quindi, abbiamo definito un RedisTemplate usando jedisConnectionFactory. Questo può essere usato per interrogare i dati con un repository personalizzato.
3.2. Proprietà di connessione personalizzate
Potresti aver già notato che le solite proprietà relative alla connessione mancano nella configurazione precedente. Ad esempio, l’indirizzo del server e la porta mancano nella configurazione. Il motivo è semplice: per il nostro esempio, stiamo usando i valori predefiniti.
Tuttavia, se abbiamo bisogno di configurare i dettagli della connessione, possiamo sempre modificare la configurazione di jedisConnectionFactory come segue:
@BeanJedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(); jedisConFactory.setHostName("localhost"); jedisConFactory.setPort(6379); return jedisConFactory;}
Redis Repository
Usiamo un’entità studente per i nostri esempi:
@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. Il repository di dati Spring
Creiamo ora StudentRepository come segue:
@Repositorypublic interface StudentRepository extends CrudRepository<Student, String> {}
Accesso ai dati utilizzando StudentRepository
Estendendo CrudRepository in StudentRepository, otteniamo automaticamente un set completo di metodi di persistenza che eseguono la funzionalità CRUD.
5.1. Salvataggio di un nuovo oggetto Student
Salviamo un nuovo oggetto student nell’archivio dati:
Student student = new Student( "Eng2015001", "John Doe", Student.Gender.MALE, 1);studentRepository.save(student);
5.2. Recupero di un Oggetto Studente esistente
Possiamo verificare il corretto inserimento dello studente nella sezione precedente recuperando i dati dello studente:
Student retrievedStudent = studentRepository.findById("Eng2015001").get();
5.3. Aggiornamento di un oggetto Studente esistente
Cambiamo il nome dello studente recuperato sopra e lo salviamo di nuovo:
retrievedStudent.setName("Richard Watson");studentRepository.save(student);
Infine, possiamo recuperare nuovamente i dati dello studente e verificare che il nome sia aggiornato nel datastore.
5.4. Eliminazione dei dati degli studenti esistenti
Possiamo eliminare i dati degli studenti sopra inseriti:
studentRepository.deleteById(student.getId());
Ora possiamo cercare l’oggetto student e verificare che il risultato sia null.
5.5. Trova tutti i dati degli studenti
Possiamo inserire alcuni oggetti degli studenti:
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);
Possiamo anche raggiungere questo obiettivo inserendo una collezione. Per questo, esiste un metodo diverso-saveAll () – che accetta un singolo oggetto iterabile contenente più oggetti student che vogliamo persistere.
Per trovare tutti gli studenti inseriti, possiamo usare il metodo findAll() :
List<Student> students = new ArrayList<>();studentRepository.findAll().forEach(students::add);
Quindi possiamo controllare rapidamente la dimensione dell’elenco degli studenti o verificare una maggiore granularità controllando le proprietà di ciascun oggetto.