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.
Top comments (0)