Spring Batch para carregar dados de cache no Redis

Desempenho tem sido um requisito muito desejado para os sistemas que desenvolvemos atualmente. É bastante comum, por exemplo, utilizar cache em consultas realizadas em bases de dados enormes, para obter um tempo de resposta adequado ao usuário. Nesse contexto, o Redis é uma alternativa bastante atraente para lidar com cache, já que é rápido, leve, e gratuito. Mas como podemos carregar esse cache de forma otimizada?

Uma alternativa seria o uso do Spring Batch. Ele é o framework ideal para carregar um grande volume de dados em um curto espaço de tempo. E o uso em conjunto com o Redis é bastante simples também!

Para começar, precisamos adicionar uma dependência no projeto para escrever dados no Redis com Spring Data:

Precisamos informar também a configuração de conexão com o Redis. Para isso existe uma factory pronta para usar chamada LettuceConnectionFactory. Com ela vamos ser capazes de criar um RedisTemplate que será utilizado para escrever os dados com o Spring Data:

💡 A factory do Lettuce permite configurar o host e porta do Redis. Se nenhum valor for configurado é utilizado o padrão de conexão para um Redis local.

Agora precisamos configurar o repositório de escrita. E novamente o Spring não nos deixa na mão. Precisamos apenas anotar a entidade que será escrita e criar o repositório apontando para essa entidade:

O mapeamento está pronto! E como fica o escritor? O código mais simples vem agora:

Com o repositório criado, basta utilizá-lo para escrever os dados no Redis. Perceba que não tivemos que dizer explicitamente como se escreve algo no Redis, o framework vai se encarregar de fazer esse trabalho por baixo dos panos apenas seguindo as configurações que fizemos no projeto.

Se executarmos o job, será possível consultar os dados que foram escritos no Redis:

$ 127.0.0.1:6379> hgetall "Pessoa:1"
1) "_class"
2) "com.redis.domain.PessoaRedis"
3) "dataNascimento"
4) "1995-01-13 22:38:38"
5) "email"
6) "dewayne@example.com"
7) "id"
8) "1"
9) "idade"
10) "28"
11) "nome"
12) "Dewayne Jenkins DDS"

Conclusão

Esse artigo mostrou como utilizar o Spring Batch para carregar dados de cache no Redis.

Se você deseja aprender mais sobre Spring Batch, recomendo esse curso, que aborda os principais conceitos do framework de forma prática e divertida. Caso você já domine os conceitos e deseje aprender mais sobre otimização de rotinas batch, tem esse curso aqui no mesmo formato.

Software Architect at Dataprev — Instructor at Udemy

Software Architect at Dataprev — Instructor at Udemy