Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Anotações para Trabalhar com Cache | Cache com Redis e Spring Boot
Introdução ao Redis

bookAnotações para Trabalhar com Cache

Em vez de lidar manualmente com o cache, é possível utilizar anotações que gerenciam automaticamente o processo. Veja a seguir as anotações disponíveis.

Cache de Resultados

A anotação @Cacheable é aplicada a métodos cujos resultados devem ser armazenados em cache. Quando o método é chamado novamente com os mesmos parâmetros, o resultado é recuperado do cache.

@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
    return userRepository.findById(userId);
}

Neste exemplo, o método getUserById armazena em cache o resultado de uma consulta de usuário pelo seu ID em um cache chamado "usersCache". Se o método for chamado novamente com o mesmo userId, os dados são recuperados do cache em vez de executar a consulta no banco de dados.

Atualização do Cache

A anotação @CachePut atualiza o cache toda vez que o método é executado, independentemente de o resultado já ter sido armazenado em cache anteriormente.

@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
    return userRepository.save(user);
}

A anotação @CachePut é utilizada para atualizar o cache toda vez que o método updateUser é chamado. Isso é útil quando os dados são alterados e é necessário sincronizar o cache com as mudanças no banco de dados. O cache é atualizado com a chave correspondente ao ID do usuário.

Limpando o Cache

A anotação @CacheEvict é utilizada para remover dados do cache, como quando um usuário é excluído do banco de dados.

@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
    userRepository.deleteById(userId);
}

Neste exemplo, o método deleteUser remove a entrada do cache com a chave igual a userId.

Operações de Cache Combinadas

A anotação @Caching permite que múltiplas operações de cache sejam realizadas em um único método, combinando @CachePut e @CacheEvict.

@Caching(
    put = { @CachePut(value = "usersCache", key = "#user.id") },
    evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
    return userRepository.save(user);
}

Neste exemplo, o método updateUser atualiza simultaneamente o cache com o novo estado do usuário usando @CachePut e remove a entrada antiga do cache utilizando @CacheEvict. Isso é útil quando é necessário realizar múltiplas operações de cache ao mesmo tempo.

1. Quando utilizar @CacheEvict?

2. Qual é o propósito da anotação @CachePut?

question mark

Quando utilizar @CacheEvict?

Select the correct answer

question mark

Qual é o propósito da anotação @CachePut?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain the difference between @Cacheable, @CachePut, and @CacheEvict?

How do I choose which caching annotation to use for a specific method?

Are there any best practices for managing cache consistency in Spring?

Awesome!

Completion rate improved to 3.33

bookAnotações para Trabalhar com Cache

Deslize para mostrar o menu

Em vez de lidar manualmente com o cache, é possível utilizar anotações que gerenciam automaticamente o processo. Veja a seguir as anotações disponíveis.

Cache de Resultados

A anotação @Cacheable é aplicada a métodos cujos resultados devem ser armazenados em cache. Quando o método é chamado novamente com os mesmos parâmetros, o resultado é recuperado do cache.

@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
    return userRepository.findById(userId);
}

Neste exemplo, o método getUserById armazena em cache o resultado de uma consulta de usuário pelo seu ID em um cache chamado "usersCache". Se o método for chamado novamente com o mesmo userId, os dados são recuperados do cache em vez de executar a consulta no banco de dados.

Atualização do Cache

A anotação @CachePut atualiza o cache toda vez que o método é executado, independentemente de o resultado já ter sido armazenado em cache anteriormente.

@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
    return userRepository.save(user);
}

A anotação @CachePut é utilizada para atualizar o cache toda vez que o método updateUser é chamado. Isso é útil quando os dados são alterados e é necessário sincronizar o cache com as mudanças no banco de dados. O cache é atualizado com a chave correspondente ao ID do usuário.

Limpando o Cache

A anotação @CacheEvict é utilizada para remover dados do cache, como quando um usuário é excluído do banco de dados.

@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
    userRepository.deleteById(userId);
}

Neste exemplo, o método deleteUser remove a entrada do cache com a chave igual a userId.

Operações de Cache Combinadas

A anotação @Caching permite que múltiplas operações de cache sejam realizadas em um único método, combinando @CachePut e @CacheEvict.

@Caching(
    put = { @CachePut(value = "usersCache", key = "#user.id") },
    evict = { @CacheEvict(value = "usersCache", key = "#user.id") }
)
public User updateUser(User user) {
    return userRepository.save(user);
}

Neste exemplo, o método updateUser atualiza simultaneamente o cache com o novo estado do usuário usando @CachePut e remove a entrada antiga do cache utilizando @CacheEvict. Isso é útil quando é necessário realizar múltiplas operações de cache ao mesmo tempo.

1. Quando utilizar @CacheEvict?

2. Qual é o propósito da anotação @CachePut?

question mark

Quando utilizar @CacheEvict?

Select the correct answer

question mark

Qual é o propósito da anotação @CachePut?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 3
some-alt