Melhorando a Performance de uma Aplicação Spring Boot com Cache Usando Redis

gervasio

Gervásio Artur

Posted on August 7, 2024

Melhorando a Performance de uma Aplicação Spring Boot com Cache Usando Redis

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"
Enter fullscreen mode Exit fullscreen mode

Rodando o docker compose:

docker compose up
Enter fullscreen mode Exit fullscreen mode

Configuração na Aplicação

  1. Adicionar a Dependência no pom.xml.
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Enter fullscreen mode Exit fullscreen mode
  1. 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
Enter fullscreen mode Exit fullscreen mode
  1. Habilitar Cache na Classe de Inicialização.
@EnableCaching
@SpringBootApplication
public class WalletWiseApplication {
    public static void main(String[] args) {
        SpringApplication.run(WalletWiseApplication.class, args);
    }
}
Enter fullscreen mode Exit fullscreen mode

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.

💖 💪 🙅 🚩
gervasio
Gervásio Artur

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