Conexão com Redis Cache - Java e Spring Boot

Data da publicação: 06/09/2025.

Neste tutorial vou explicar como configurar e conectar uma programa Java usando Spring Boot com o gerenciador de Cache Redis

1 Como configurar o projeto e rodar o Redis no Docker

Nesse início, vou considerar que você já possui conhecimento de como iniciar um projeto Maven, porém caso tenha dúvida aconselho a ler meu tutorial da "Minha Primeira API" onde eu explico os passos para fazer isso.

Após abrir o projeto Maven no Eclipse, devemos colocar ou confirmar que temos as dependências necessárias para se comunicar com o Redis e para expor APIs.

As dependências que vamos utilizar são: Actuator para verificar a saúde da aplicação, Web para expor as APIs, Spring Data Redis para se comunicar com Redis.

O Spring Data Redis vai fornecer APIs para que possamos se comunicar com o Redis de uma forma prática e fácil.

Segue na imagem abaixo as dependências que serão utilizadas nesse tutorial e que você deve adicionar no seu pom.xml.

Print screen da tela do Eclipse exibindo as dependências do arquivo pom.xml

Agora precisamos ter um servidor do Redis rodando localmente, para isso vamos utilizar o Docker.

Para iniciar um servidor do Redis utilizando o Docker basta rodar o comando "docker run -d --name local-redis -p 6379:6379 redis", então o servidor do Redis irá subir no container. Nesse comando temos os parâmetros -d, que fará com que o container rode em plano de fundo, -p, que irá expor a porta 6379 e --name, que nos permite dar um nome para o nosso container, no caso local-redis. Após rodar o comando você pode utilizar o comando "docker logs local-redis" para verificar se o container subiu corretamente.

Print screen da tela do Prompt de comandos exibindo a execução do Redis no Docker

O Spring Boot usa a classe chamada "RedisStandaloneConfiguration" para criar um objeto e adicionar as configurações do Redis para a aplicação. A configuração padrão utilizada é ter o host como "localhost" e a porta como "6379", sendo assim, no nosso caso não precisamos criar nenhuma configuração extra para que nossa aplicação se conecte corretamente com o Redis, entretanto, se por exemplo mudarmos a porta para 6378 precisaríamos alterar essa configuração.

Para garantir que a conexão funcione mesmo não sendo a configuração padrão vamos criar um novo pacote chamado config e dentro dele crie uma classe chamada RedisConfig. Anote essa classe com "@Configuration" e crie um método públic que retorne a classe "RedisStandaloneConfiguration" com o nome de "redisStandaloneConfiguration" que não recebe nenhum parâmetro. Dentro dele crie um objeto do tipo "RedisStandaloneConfiguration", em seguida utilize o método "setHostName" desse objeto para passar a string "localhost" e o método "setPort" para passar o inteiro "6379", então retorne esse objeto. O ideal é que tanto o host quanto a porta viessem do arquivo application.properties, mas para esse tutorial vamos deixar assim.

Print screen da tela do Eclipse exibindo a classe padrão do Spring Boot para configuração do Redis
Print screen da tela do Eclipse exibindo a classe de configuração do projeto para o Redis

2 Criando as classe de entidade e repository

Com as configurações feitas, agora precisamos criar as classes de entidade que representará a estrutura do objeto no Redis e o repositório que se comunicará com o Redis para enviar o objeto.

Crie um novo pacote no pacote principal com o nome de "entity" e dentro desse pacote crie uma nova classe chamada "Pessoa". Anote essa classe com "@RedisHash", essa anotação servirá para o Spring Boot identificar que esse será um objeto a ser salvo no Redis. Agora crie os atributos privados "String id", "String nome" e "LocalDate dataDeNascimento". Anote o atributo id com "@Id" para que o Spring Boot identifique que esse atributo será a o identificador do registro. Por fim crie os gets e sets.

Print screen da tela do Eclipse exibindo a classe de entitidade Pessoa

Agora crie um novo pacote chamado "repository" e dentro dele crie uma nova interface chamada "PessoaRepository". Extenda a interface CrudRepository e passe como parâmetro "Pessoa" e "String". Esses parâmetros significam que esse repositório irá persistir objetos do tipo Pessoa que tem o identificador do tipo String. Por fim anote a interface com a anotação "@Repository".

Print screen da tela do Eclipse exibindo a interface da PessoaRepository

3 Cadastrando, Consultando, Alterando e Excluindo dados via API

Pronto, temos nosso projeto preparado para enviar e receber dados do Redis, agora vamos criar APIs para fazer essas comunicações.

Para fins de estudo, utilizaremos a mesma entidade como parâmetro da nossa API, porém no mercado de trabalho é bem comum que seja uma outra classe chamada DTO ao invés da entidade diretamente. Dito isso, crie um novo pacote chamado "controller" e dentro dele crie uma classe chamada "PessoaController". Anote essa classe com "@RestController" e "@RequestMapping("/pessoas")". Adicione todos os imports (lembre-se que pode utilizar CTRL + o).

Para receber os dados, crie um método chamado cadastrar e receba um objeto do tipo "Pessoa". Anote o método com "@PostMapping" e o parêmtro do método com "@RequestBody". A anotação "@PostMapping" serve para receber requisições http do tipo Post e a anotação "@RequestBody" serve para informar o Spring que é esperado um objeto json no corpo da requisição com o mesmo formato da sua classe. Além disso, como retorno do método, coloque a classe Pessoa.

No mercado de trabalho temos um padrão de projeto que fala que a classe controller vai chamar uma classe service e a classe service vai chamar a classe repository que vai adicionar no redis. Porém como o intuito desse tutorial é apenas exemplificar como se comunicar com o Redis, vamos criar diretamente a interface Repository.

Agora vamos "injetar" a dependência "PessoaRepository" dentro do controller. A injeção de dependência é um padrão de projeto que o Spring utiliza para reaproveitar os objetos, ou seja, quando você anotou a interface PessoaRepository com "@Repository" o Spring automaticamente vai criar um objeto da sua interface e vai deixar ele disponível para ser utilizado, e agora nós vamos aprender a como utilizá-lo. Crie um atributo privado dentro da classe PessoaController do tipo PessoaRepository, ficando: "private PessoaRepository pessoaRepository;". Agora para informar o Spring que você quer injetar a dependência, basta anotar esse atributo com "@Autowired" e pronto, ele será populado com o objeto. Nas novas versões do Spring Boot é possível também injetar a dependência deixando o atributo como final e recebendo ele no construtor, mas nós vamos utilizar a anotação mesmo.

Pronto, praticamente tudo já está preparado, agora dentro do método cadatrar antes da linha de return set o valor do id da pessoa com o "UUID.randomUUID.toString()". O uuid é a sigla de universally unique identifier e ele será nosso identificador da pessoa. agora retorne o retorno do método save do pessoaRepository passando o objeto pessoa.

Print screen da tela do Eclipse exibindo a class PessoaController e a estrutura base final do projeto

Agora para testar vamos utilizar uma aplicação chamada Postman, ela nos permite fazer chamadas HTTP do tipo Post e passar um objeto json no corpo da requisição.

Primeiro execute o seu projeto clicando com o botão direito do mouse em cima da classe Application -> Run As -> Java Application, e então abra o Postman e crie uma nova requisição, então mude o método para POST, selecione "raw", selecione "JSON" e coloque '{"nome": "A Primeira Pessoa", "dataDeNascimento": "1985-05-01"}'. Após preencher tudo clique em Send e se funcionar você recebará a resposta na tela abaixo e com o código HTTP 200 OK.

Print screen da tela do Postman para cadastrar uma nova pessoa

Pronto! Agora para fazer os métodos de Consultar, Alterar e Excluir é bem fácil.

Vamos começar com o de Consultar. Para simplificar vamos retornar todas as pessoas cadastradas, porém lembre que retornar todos os registros cadastrados pode ser perigoso no ambiente real, pois caso tenha milhões de registros pode afetar o desempenho do redis e do seu programa! Mas para nosso estudo tudo bem. Crie um método chamado "consultar" que retorne um Iterable de Pesssoa e no retorno desse método use o "pessoaRepository.findAll();". Anote seu método com "@GetMapping" e pronto, você ja pode executar seu programa novamente testando o endpoint "http://localhost:8080/pessoas" direto no navegado ou no Postman, pois esse é um método GET.

Print screen da tela do Eclipse com a classe PessoaController com o método de consulta
Print screen da tela do navegador Chrome com a resposta do método de consulta

Agora vamos fazer o método de alteração. Crie um novo método na sua classe de controller, esse método retornará uma Pessoa, ele se chamará "alterar" e receberá uma pessoa com a anotação "@RequestBody", ficando "public Pessoa alterar(@RequestBody Pessoa pessoa)". O Spring Data trata o método save do repositório como um "upsert", isso significa que ele insere quando o registro não existir (no nosso caso quando o id for nulo ou um que não existe) e atualiza quando o registro já existir, sendo assim também utilizaremos "pessoaRepository.save(pessoa)" no retorno do nosso novo método. Por fim anote esse novo método com "@PutMapping" e pronto, ele já pode ser testado. Execute a sua aplicação e no Postman utilizar o método PUT e passe no corpo da requisição '{"id": "f30a5784-a567-4a73-952a-5e8807066354","nome": "Alteração de pessoa","dataDeNascimento": "1999-11-25"}', repare que nesse objeto json eu coloquei valor do id como "f30a5784-a567-4a73-952a-5e8807066354", substitua esse valor pelo retornado na sua API de consulta e se tudo funcionar esses mesmos valores serão exibidos na resposta.

Método alterar da classe PessoaController
Print screen da tela do Postman de request e response do PUT, alterar Pessoa

Por último, vamos fazer o delete, crie um novo método chamado "deletar" que retorna void e recebe uma String id. Esse parâmetro deve ser anotado com "@RequestParam", a assinatura ficará: "public void deletar(@RequestParam String id)". Dentro desse método chame o método "pessoaRepository.deleteById(id)". Agora anote seu novo método com "@DeleteMapping" e pode executar a aplicação. Para testar vá no Postman, altere o método http para DELETE, clique em "Params", insira em Key o valor id e em Value o valor f30a5784-a567-4a73-952a-5e8807066354, ou seja, o valor que retornou do seu método consultar, e então clique em send. Como resposta você receberá "Status 200 OK", isso significa que funcionou! Caso você queira confirmar, você pode utilizar o seu método de consultar para ver o retorno.

Método deletar da classe PessoaController
Print screen da tela do Postman de request e response do DELETE, deletar Pessoa

Conclusão

Após fazer esse tutorial você conseguiu comunicar com o Redis através do Java usando Spring Boot e Spring Data. Também conseguiu executar os métodos HTTP POST, GET, PUT e DELETE para Cadastrar, Consultar, Alterar e Deletar dados do Redis. PARABÉNSSS por ter chegado até aqui! Espero que continue evoluindo e que tenha te ajudado. Até a próxima!

Assista também o vídeo no youtube