Introduction to Spring Data Redis

Overview

this article is an introduction to Spring Data Redis, which provides the abstracts of the Spring Data platform to Redis – the popular in-memory data structure store.

Redis é impulsionado por uma estrutura de dados baseada em teclas para persistir dados e pode ser usado como um banco de dados, cache, Corretor de mensagens, etc.

poderemos utilizar os padrões comuns de dados de Primavera (modelos, etc.), tendo também a simplicidade tradicional de todos os projectos de dados da Primavera.

Maven Dependencies

Let’s start by declaring the Spring Data Redis dependencies in the 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>

as últimas versões de spring-data-redis e jedis podem ser baixadas da Maven Central.

alternativamente, podemos usar o iniciador de arranque de mola para o Redis, o que irá eliminar a necessidade de dados de mola separados e dependências jedis:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.3.3.RELEASE</version></dependency>

mais uma vez, a Maven central oferece as últimas informações da versão.

a configuração Redis

para definir as configurações de conexão entre o cliente da aplicação e a instância do servidor Redis, precisamos usar um cliente Redis.

há uma série de implementações cliente Redis disponíveis para Java. Neste tutorial, vamos usar Jedis – uma implementação simples e poderosa do cliente Redis.

existe um bom suporte para ambas as configurações XML e Java no framework; para este tutorial, vamos usar configuração baseada em Java.

3.1. Configuração Java

vamos começar com as definições de feijão de configuração:

@BeanJedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory();}@Beanpublic RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); return template;}

a configuração é bastante simples. Primeiro, usando o cliente Jedis, estamos a definir um connectionFactory.

então, definimos um Redistemplato usando o jedisConnectionFactory. Isto pode ser usado para pesquisar dados com um repositório personalizado.

3.2. Propriedades de ligação personalizadas

pode já ter reparado que as propriedades normais relacionadas com a ligação estão em falta na configuração acima. Por exemplo, o endereço e a porta do servidor estão em falta na configuração. A razão é simples: por exemplo, estamos usando os defaults.

no Entanto, se é necessário configurar os detalhes de conexão, podemos sempre modificar o jedisConnectionFactory de configuração da seguinte forma:

@BeanJedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(); jedisConFactory.setHostName("localhost"); jedisConFactory.setPort(6379); return jedisConFactory;}

Redis Repositório

Vamos usar um Estudante entidade para nossos exemplos:

@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. A Primavera Repositório de Dados

agora Vamos criar o StudentRepository da seguinte forma:

@Repositorypublic interface StudentRepository extends CrudRepository<Student, String> {}

Acesso a Dados Usando StudentRepository

estendendo CrudRepository em StudentRepository, nós automaticamente obter um conjunto completo de métodos de persistência que executam a funcionalidade CRUD.

5.1. A gravar um novo objecto de estudante

vamos salvar um novo objecto de estudante na data store:

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

5.2. Obter um objecto de estudante existente

podemos verificar a inserção correcta do estudante na secção anterior, obtendo os dados do estudante:

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

5.3. Atualizando um objeto estudantil existente

vamos mudar o nome do estudante obtido acima e salvá-lo novamente:

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

finalmente, podemos recuperar os dados do estudante novamente e verificar que o nome é atualizado no datastore.

5.4. Apagar um dado existente do Estudante

podemos apagar os dados acima inseridos do estudante:

studentRepository.deleteById(student.getId());

agora podemos procurar o objeto do estudante e verificar se o resultado é nulo.

5.5. Encontrar todos os dados do Estudante

podemos inserir alguns objectos do estudante:

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);

também podemos conseguir isso inserindo uma coleção. Para isso, há um método diferente – saveAll() – que aceita um único objeto iterável contendo múltiplos objetos estudantis que queremos persistir.

para encontrar todos os alunos inseridos, podemos usar o método findAll() :

List<Student> students = new ArrayList<>();studentRepository.findAll().forEach(students::add);

então podemos verificar rapidamente o tamanho da lista de alunos ou verificar para uma maior granularidade, verificando as propriedades de cada objeto.

conclusão



+