Välimuistin Kanssa Työskentelyn Annotaatiot
Pyyhkäise näyttääksesi valikon
Sen sijaan, että käsittelisit välimuistia manuaalisesti, voit käyttää annotaatioita, jotka hallinnoivat prosessia automaattisesti. Tarkastellaan käytettävissä olevia annotaatioita.
Tulosten välimuistiin tallentaminen
@Cacheable annotaatio lisätään metodeihin, joiden tulokset tulee tallentaa välimuistiin. Kun metodia kutsutaan uudelleen samoilla parametreilla, tulos haetaan välimuistista.
@Cacheable(value = "usersCache", key = "#userId")
public User getUserById(String userId) {
return userRepository.findById(userId);
}
Tässä esimerkissä getUserById metodi tallentaa käyttäjäkyselyn tuloksen heidän ID:nsä perusteella välimuistiin nimeltä "usersCache". Jos metodia kutsutaan uudelleen samalla userId:llä, data haetaan välimuistista sen sijaan, että suoritettaisiin kysely tietokantaan.
Välimuistin päivittäminen
@CachePut annotaatio päivittää välimuistin aina, kun metodi suoritetaan, riippumatta siitä, oliko tulos välimuistissa aiemmin.
@CachePut(value = "usersCache", key = "#user.id")
public User updateUser(User user) {
return userRepository.save(user);
}
@CachePut -annotaatiota käytetään välimuistin päivittämiseen aina, kun updateUser metodia kutsutaan. Tämä on hyödyllistä, kun data muuttuu ja välimuisti täytyy synkronoida tietokannan muutosten kanssa. Välimuisti päivitetään avaimella, joka vastaa käyttäjän ID:tä.
Välimuistin tyhjentäminen
@CacheEvict -annotaatiota käytetään datan poistamiseen välimuistista, esimerkiksi kun käyttäjä poistetaan tietokannasta.
@CacheEvict(value = "usersCache", key = "#userId")
public void deleteUser(String userId) {
userRepository.deleteById(userId);
}
Tässä esimerkissä deleteUser metodi poistaa välimuistista merkinnän, jonka avain on yhtä kuin userId.
Yhdistetyt välimuistioperaatiot
@Caching annotaatio mahdollistaa useiden välimuistioperaatioiden suorittamisen yhdessä metodissa, yhdistäen @CachePut ja @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);
}
Tässä esimerkissä updateUser-metodi päivittää samanaikaisesti välimuistin käyttäjän uudella tilalla käyttäen @CachePut-annotaatiota ja poistaa vanhan merkinnän välimuistista käyttäen @CacheEvict-annotaatiota. Tämä on hyödyllistä, kun täytyy suorittaa useita välimuistioperaatioita samanaikaisesti.
1. Milloin käytetään @CacheEvict-annotaatiota?
2. Mikä on @CachePut-annotaation tarkoitus?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme