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
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 in cache

L'annotazione @Cacheable viene applicata ai metodi i cui risultati devono essere memorizzati in 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 viene chiamato il metodo updateUser. Utile quando i dati cambiano e occorre sincronizzare la cache con le modifiche nel database. La cache viene aggiornata con la chiave corrispondente all'ID utente.

Pulizia 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 utilizzando @CacheEvict. Questo è utile quando è necessario eseguire più operazioni sulla cache allo stesso tempo.

1. Quando si dovrebbe utilizzare @CacheEvict?

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

question mark

Quando si dovrebbe utilizzare @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?

Awesome!

Completion rate improved to 3.33

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 in cache

L'annotazione @Cacheable viene applicata ai metodi i cui risultati devono essere memorizzati in 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 viene chiamato il metodo updateUser. Utile quando i dati cambiano e occorre sincronizzare la cache con le modifiche nel database. La cache viene aggiornata con la chiave corrispondente all'ID utente.

Pulizia 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 utilizzando @CacheEvict. Questo è utile quando è necessario eseguire più operazioni sulla cache allo stesso tempo.

1. Quando si dovrebbe utilizzare @CacheEvict?

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

question mark

Quando si dovrebbe utilizzare @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