Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Анотації для Роботи з Кешем | Кешування з Redis і Spring Boot
Вступ до Redis

bookАнотації для Роботи з Кешем

Замість ручного керування кешуванням можна використовувати анотації, які автоматично керують цим процесом. Розглянемо доступні анотації.

Кешування результатів

Анотація @Cacheable застосовується до методів, результати яких потрібно кешувати. При повторному виклику методу з тими ж параметрами результат буде отримано з кешу.

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

У цьому прикладі метод getUserById кешує результат запиту користувача за його ID у кеші з назвою "usersCache". Якщо метод викликається знову з тим самим userId, дані отримуються з кешу замість виконання запиту до бази даних.

Оновлення кешу

Анотація @CachePut оновлює кеш кожного разу при виконанні методу, незалежно від того, чи був результат вже закешований.

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

Анотація @CachePut використовується для оновлення кешу щоразу, коли викликається метод updateUser. Це корисно, коли дані змінюються і необхідно синхронізувати кеш із змінами у базі даних. Кеш оновлюється з ключем, що відповідає ID користувача.

Очищення кешу

Анотація @CacheEvict використовується для видалення даних з кешу, наприклад, коли користувача видаляють з бази даних.

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

У цьому прикладі метод deleteUser видаляє запис з кешу з ключем, що дорівнює userId.

Комбіновані операції з кешем

Анотація @Caching дозволяє виконувати декілька операцій кешування в межах одного методу, поєднуючи @CachePut та @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);
}

У цьому прикладі метод updateUser одночасно оновлює кеш із новим станом користувача за допомогою @CachePut та видаляє старий запис з кешу за допомогою @CacheEvict. Це корисно, коли потрібно виконати кілька операцій з кешем одночасно.

1. Коли слід використовувати @CacheEvict?

2. Яке призначення анотації @CachePut?

question mark

Коли слід використовувати @CacheEvict?

Select the correct answer

question mark

Яке призначення анотації @CachePut?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 3.33

bookАнотації для Роботи з Кешем

Свайпніть щоб показати меню

Замість ручного керування кешуванням можна використовувати анотації, які автоматично керують цим процесом. Розглянемо доступні анотації.

Кешування результатів

Анотація @Cacheable застосовується до методів, результати яких потрібно кешувати. При повторному виклику методу з тими ж параметрами результат буде отримано з кешу.

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

У цьому прикладі метод getUserById кешує результат запиту користувача за його ID у кеші з назвою "usersCache". Якщо метод викликається знову з тим самим userId, дані отримуються з кешу замість виконання запиту до бази даних.

Оновлення кешу

Анотація @CachePut оновлює кеш кожного разу при виконанні методу, незалежно від того, чи був результат вже закешований.

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

Анотація @CachePut використовується для оновлення кешу щоразу, коли викликається метод updateUser. Це корисно, коли дані змінюються і необхідно синхронізувати кеш із змінами у базі даних. Кеш оновлюється з ключем, що відповідає ID користувача.

Очищення кешу

Анотація @CacheEvict використовується для видалення даних з кешу, наприклад, коли користувача видаляють з бази даних.

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

У цьому прикладі метод deleteUser видаляє запис з кешу з ключем, що дорівнює userId.

Комбіновані операції з кешем

Анотація @Caching дозволяє виконувати декілька операцій кешування в межах одного методу, поєднуючи @CachePut та @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);
}

У цьому прикладі метод updateUser одночасно оновлює кеш із новим станом користувача за допомогою @CachePut та видаляє старий запис з кешу за допомогою @CacheEvict. Це корисно, коли потрібно виконати кілька операцій з кешем одночасно.

1. Коли слід використовувати @CacheEvict?

2. Яке призначення анотації @CachePut?

question mark

Коли слід використовувати @CacheEvict?

Select the correct answer

question mark

Яке призначення анотації @CachePut?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 3
some-alt