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.