Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Annotationer til Arbejde med Cache | Caching med Redis og Spring Boot
Introduktion til Redis

bookAnnotationer til Arbejde med Cache

I stedet for manuelt at håndtere caching, kan du bruge annotationer, der automatisk styrer processen. Lad os se på de tilgængelige annotationer.

Caching af resultater

@Cacheable annotationen anvendes på metoder, hvis resultater skal caches. Når metoden kaldes igen med de samme parametre, hentes resultatet fra cachen.

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

I dette eksempel gemmer getUserById metoden resultatet af en brugerforespørgsel efter deres ID i en cache kaldet "usersCache". Hvis metoden kaldes igen med samme userId, hentes dataene fra cachen i stedet for at udføre forespørgslen mod databasen.

Opdatering af cachen

@CachePut annotationen opdaterer cachen hver gang metoden udføres, uanset om resultatet tidligere var cacheret.

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

Annotationen @CachePut bruges til at opdatere cachen hver gang updateUser-metoden kaldes. Dette er nyttigt, når data ændres, og det er nødvendigt at synkronisere cachen med ændringerne i databasen. Cachen opdateres med den nøgle, der svarer til bruger-ID'et.

Rydning af cache

Annotationen @CacheEvict bruges til at fjerne data fra cachen, for eksempel når en bruger slettes fra databasen.

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

I dette eksempel fjerner deleteUser-metoden posten fra cachen med nøglen svarende til userId.

Kombinerede cache-operationer

@Caching-annotationen muliggør flere cache-operationer inden for en enkelt metode, hvor @CachePut og @CacheEvict kombineres.

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

I dette eksempel opdaterer updateUser-metoden samtidig cachen med brugerens nye tilstand ved hjælp af @CachePut og fjerner den gamle post fra cachen ved hjælp af @CacheEvict. Dette er nyttigt, når der skal udføres flere cache-operationer på samme tidspunkt.

1. Hvornår ville du bruge @CacheEvict?

2. Hvad er formålet med @CachePut-annotationen?

question mark

Hvornår ville du bruge @CacheEvict?

Select the correct answer

question mark

Hvad er formålet med @CachePut-annotationen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 3.33

bookAnnotationer til Arbejde med Cache

Stryg for at vise menuen

I stedet for manuelt at håndtere caching, kan du bruge annotationer, der automatisk styrer processen. Lad os se på de tilgængelige annotationer.

Caching af resultater

@Cacheable annotationen anvendes på metoder, hvis resultater skal caches. Når metoden kaldes igen med de samme parametre, hentes resultatet fra cachen.

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

I dette eksempel gemmer getUserById metoden resultatet af en brugerforespørgsel efter deres ID i en cache kaldet "usersCache". Hvis metoden kaldes igen med samme userId, hentes dataene fra cachen i stedet for at udføre forespørgslen mod databasen.

Opdatering af cachen

@CachePut annotationen opdaterer cachen hver gang metoden udføres, uanset om resultatet tidligere var cacheret.

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

Annotationen @CachePut bruges til at opdatere cachen hver gang updateUser-metoden kaldes. Dette er nyttigt, når data ændres, og det er nødvendigt at synkronisere cachen med ændringerne i databasen. Cachen opdateres med den nøgle, der svarer til bruger-ID'et.

Rydning af cache

Annotationen @CacheEvict bruges til at fjerne data fra cachen, for eksempel når en bruger slettes fra databasen.

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

I dette eksempel fjerner deleteUser-metoden posten fra cachen med nøglen svarende til userId.

Kombinerede cache-operationer

@Caching-annotationen muliggør flere cache-operationer inden for en enkelt metode, hvor @CachePut og @CacheEvict kombineres.

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

I dette eksempel opdaterer updateUser-metoden samtidig cachen med brugerens nye tilstand ved hjælp af @CachePut og fjerner den gamle post fra cachen ved hjælp af @CacheEvict. Dette er nyttigt, når der skal udføres flere cache-operationer på samme tidspunkt.

1. Hvornår ville du bruge @CacheEvict?

2. Hvad er formålet med @CachePut-annotationen?

question mark

Hvornår ville du bruge @CacheEvict?

Select the correct answer

question mark

Hvad er formålet med @CachePut-annotationen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 3
some-alt