Melhorando a Performance de uma Aplicação Spring Boot com Cache Usando Redis
Gervásio Artur
Posted on August 7, 2024
O uso de cache pode melhorar significativamente o desempenho da sua aplicação, reduzindo a carga nos recursos do sistema e acelerando o tempo de resposta. Aqui, compartilho uma abordagem simples e eficaz para implementar cache em uma aplicação Spring Boot usando Redis.
Configuração do Redis Localmente
O primeiro passo é rodar o Redis na sua máquina. Para isso, você pode usar um arquivo docker-compose para facilitar a configuração. Alternativamente, você pode optar por um serviço de Redis online.
docker-compose.yml
version: '3.1'
services:
redis:
image: redis:latest
ports:
- "6379:6379"
Rodando o docker compose:
docker compose up
Configuração na Aplicação
- Adicionar a Dependência no pom.xml.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- Adicionar Configurações no application.properties.
## CONFIGURING CACHE
spring.cache.type=redis
spring.data.redis.url=${SPRING_DATA_REDIS_URL:redis://localhost:6379/0}
spring.data.redis.host=${SPRING_DATA_REDIS_HOST:localhost}
spring.data.redis.database=${SPRING_DATA_REDIS_DATABASE:1}
spring.data.redis.username=${SPRING_DATA_REDIS_USERNAME:default}
spring.data.redis.password=${SPRING_DATA_REDIS_PASSWORD:0199}
spring.data.redis.port=${SPRING_DATA_REDIS_PORT:6379}
spring.data.redis.timeout=60000
- Habilitar Cache na Classe de Inicialização.
@EnableCaching
@SpringBootApplication
public class WalletWiseApplication {
public static void main(String[] args) {
SpringApplication.run(WalletWiseApplication.class, args);
}
}
Caso de Uso: Cacheando Despesas de um Usuário
📌 Cenário: Queremos cachear as despesas de um usuário específico para otimizar as buscas. Nomeamos o cache como fixed_expenses e usamos o identificador único do usuário como chave.
🔍 Busca Inicial: Quando o método getByUserId é chamado, o sistema verifica se os valores já estão no cache. Se não estiverem, ele busca as informações no banco de dados e alimenta o cache. Nas próximas buscas, as informações estarão no cache, evitando a necessidade de novas consultas ao banco de dados, o que melhora o tempo de execução e o desempenho da aplicação.
Atualizando o Cache
**
**✍️ Novo Cenário: Se o usuário adicionar uma nova despesa, precisamos atualizar o cache. Para isso, usamos a anotação @CacheEvict no método add, especificando o nome do cache fixed_expenses e a chave correspondente. Isso remove o cache antigo, garantindo que uma nova busca pelo método getByUserId traga as informações mais recentes.
Benefícios
🔄 Desempenho Melhorado: Redução do tempo de resposta.
📉 Menor Carga no Banco de Dados: Menos consultas ao banco.
🚀 Aplicação Mais Rápida e Eficiente: Melhor experiência para o usuário.
💡 Usar o Redis para cache em sua aplicação Spring Boot pode ser um grande diferencial no desempenho da sua aplicação. Com a abordagem certa, você garante que suas informações estejam sempre atualizadas e acessíveis de forma rápida.
Posted on August 7, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
August 7, 2024