Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Annotazioni per la Gestione della Cache | Caching con Redis e Spring Boot
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Introduzione a Redis

bookAnnotazioni per la Gestione della Cache

Invece di gestire manualmente la cache, è possibile utilizzare le annotazioni che automatizzano il processo. Esaminiamo le annotazioni disponibili.

Memorizzazione dei risultati nella cache

L'annotazione @Cacheable viene applicata ai metodi i cui risultati devono essere memorizzati nella cache. Quando il metodo viene richiamato nuovamente con gli stessi parametri, il risultato viene recuperato dalla cache.

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

In questo esempio, il metodo getUserById memorizza nella cache il risultato di una query utente tramite il loro ID in una cache denominata "usersCache". Se il metodo viene richiamato nuovamente con lo stesso userId, i dati vengono recuperati dalla cache invece di eseguire la query sul database.

Aggiornamento della Cache

L'annotazione @CachePut aggiorna la cache ogni volta che il metodo viene eseguito, indipendentemente dal fatto che il risultato sia già stato memorizzato nella cache in precedenza.

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

L'annotazione @CachePut viene utilizzata per aggiornare la cache ogni volta che il metodo updateUser viene chiamato. Questa funzionalità è utile quando i dati cambiano e si necessita di sincronizzare la cache con le modifiche presenti nel database. La cache viene aggiornata utilizzando la chiave corrispondente all'ID utente.

Svuotamento della Cache

L'annotazione @CacheEvict viene utilizzata per rimuovere i dati dalla cache, ad esempio quando un utente viene eliminato dal database.

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

In questo esempio, il metodo deleteUser rimuove la voce dalla cache con la chiave uguale a userId.

Operazioni combinate sulla cache

L'annotazione @Caching consente di eseguire più operazioni di caching all'interno di un singolo metodo, 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);
}

In questo esempio, il metodo updateUser aggiorna contemporaneamente la cache con il nuovo stato dell'utente utilizzando @CachePut e rimuove la vecchia voce dalla cache tramite @CacheEvict. Questa operazione è utile quando è necessario eseguire più operazioni sulla cache allo stesso tempo.

1. Quando si utilizza @CacheEvict?

2. Qual è lo scopo dell'annotazione @CachePut?

question mark

Quando si utilizza @CacheEvict?

Select the correct answer

question mark

Qual è lo scopo dell'annotazione @CachePut?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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?

bookAnnotazioni per la Gestione della Cache

Scorri per mostrare il menu

Invece di gestire manualmente la cache, è possibile utilizzare le annotazioni che automatizzano il processo. Esaminiamo le annotazioni disponibili.

Memorizzazione dei risultati nella cache

L'annotazione @Cacheable viene applicata ai metodi i cui risultati devono essere memorizzati nella cache. Quando il metodo viene richiamato nuovamente con gli stessi parametri, il risultato viene recuperato dalla cache.

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

In questo esempio, il metodo getUserById memorizza nella cache il risultato di una query utente tramite il loro ID in una cache denominata "usersCache". Se il metodo viene richiamato nuovamente con lo stesso userId, i dati vengono recuperati dalla cache invece di eseguire la query sul database.

Aggiornamento della Cache

L'annotazione @CachePut aggiorna la cache ogni volta che il metodo viene eseguito, indipendentemente dal fatto che il risultato sia già stato memorizzato nella cache in precedenza.

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

L'annotazione @CachePut viene utilizzata per aggiornare la cache ogni volta che il metodo updateUser viene chiamato. Questa funzionalità è utile quando i dati cambiano e si necessita di sincronizzare la cache con le modifiche presenti nel database. La cache viene aggiornata utilizzando la chiave corrispondente all'ID utente.

Svuotamento della Cache

L'annotazione @CacheEvict viene utilizzata per rimuovere i dati dalla cache, ad esempio quando un utente viene eliminato dal database.

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

In questo esempio, il metodo deleteUser rimuove la voce dalla cache con la chiave uguale a userId.

Operazioni combinate sulla cache

L'annotazione @Caching consente di eseguire più operazioni di caching all'interno di un singolo metodo, 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);
}

In questo esempio, il metodo updateUser aggiorna contemporaneamente la cache con il nuovo stato dell'utente utilizzando @CachePut e rimuove la vecchia voce dalla cache tramite @CacheEvict. Questa operazione è utile quando è necessario eseguire più operazioni sulla cache allo stesso tempo.

1. Quando si utilizza @CacheEvict?

2. Qual è lo scopo dell'annotazione @CachePut?

question mark

Quando si utilizza @CacheEvict?

Select the correct answer

question mark

Qual è lo scopo dell'annotazione @CachePut?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 3
some-alt