Introdução ao Spring Data Redis

Introdução ao Spring Data Redis

1. Visão geral

Este artigo éan introduction to Spring Data Redis, que fornece as abstrações da plataforma Spring Data paraRedis - o popular armazenamento de estrutura de dados na memória.

O Redis é direcionado por uma estrutura de dados baseada em keystore para manter os dados e pode ser usado como banco de dados, cache, intermediário de mensagens, etc.

Seremos capazes de usar os padrões comuns do Spring Data (modelos, etc.), ao mesmo tempo que teremos a simplicidade tradicional de todos os projetos do Spring Data.

2. Dependências do Maven

Vamos começar declarando as dependências do Spring Data Redis empom.xml:


    org.springframework.data
    spring-data-redis
    2.0.3.RELEASE
 


    redis.clients
    jedis
    2.9.0
    jar

As versões mais recentes despring-data-redis ejedis podem ser baixadas do Maven Central.

3. A configuração do Redis

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

Há várias implementações de clientes Redis disponíveis para Java. Neste tutorial,we’ll use Jedis – a simple and powerful Redis client implementation.

Há um bom suporte para configuração XML e Java na estrutura; para este tutorial, usaremos a configuração baseada em Java.

3.1. Configuração Java

Vamos começar com as definições do bean de configuração:

@Bean
JedisConnectionFactory jedisConnectionFactory() {
    return new JedisConnectionFactory();
}

@Bean
public RedisTemplate redisTemplate() {
    RedisTemplate template = new RedisTemplate<>();
    template.setConnectionFactory(jedisConnectionFactory());
    return template;
}

A configuração é bastante simples. Primeiro, usando o cliente Jedis, estamos definindo umconnectionFactory.

Em seguida, definimos umRedisTemplate usando ojedisConnectionFactory.. Isso pode ser usado para consultar dados com um repositório personalizado.

3.2. Propriedades de conexão personalizadas

Você já deve ter notado que as propriedades relacionadas à conexão usuais estão ausentes na configuração acima. Por exemplo, o endereço do servidor e a porta estão faltando na configuração. O motivo é simples: para nosso exemplo, estamos usando os padrões.

No entanto, se precisarmos configurar os detalhes da conexão, sempre podemos modificar a configuração dejedisConnectionFactory da seguinte maneira:

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

4. Repositório Redis

Vamos usar uma entidadeStudent 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. O Spring Data Repository

Vamos agora criar oStudentRepository da seguinte maneira:

@Repository
public interface StudentRepository extends CrudRepository {}

5. Acesso a dados usandoStudentRepository

EstendendoCrudRepository emStudentRepository, obtemos automaticamente um conjunto completo de métodos de persistência que executam a funcionalidade CRUD.

5.1. Salvando um Novo Objeto de Aluno

Vamos salvar um novo objeto de aluno no armazenamento de dados:

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

5.2. Recuperando um Objeto de Aluno Existente

Podemos verificar a inserção correta do aluno na seção anterior, buscando os dados do aluno:

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

5.3. Atualizando um Objeto de Aluno Existente

Vamos mudar o nome do aluno recuperado acima e salvá-lo novamente:

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

Por fim, podemos recuperar os dados do aluno novamente e verificar se o nome está atualizado no armazenamento de dados.

5.4. Apagando Dados de Alunos Existentes

Podemos excluir os dados do aluno inseridos acima:

studentRepository.deleteById(student.getId());

Agora podemos pesquisar o objeto aluno e verificar se o resultado énull.

5.5. Encontre todos os dados do aluno

Podemos inserir alguns objetos do aluno:

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, existe um método diferente -saveAll() - que aceita um único objetoIterable contendo vários objetos de aluno que queremos persistir.

Para encontrar todos os alunos inseridos, podemos usar o métodofindAll():

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

Em seguida, podemos verificar rapidamente o tamanho da listastudents ou verificar uma maior granularidade verificando as propriedades de cada objeto.

6. Conclusão

Neste tutorial, abordamos os conceitos básicos do Spring Data Redis. O código-fonte dos exemplos acima pode ser encontrado ema GitHub project.