Как оптимизировать кеширование с помощью @Cacheable, чтобы избежать дублирования данных в RedisJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как оптимизировать кеширование с помощью @Cacheable, чтобы избежать дублирования данных в Redis

Сообщение Anonymous »

Я пытаюсь добавить уровень кэширования к своему уровню постоянства, используя встроенную аннотацию @Cacheable. Однако у меня есть метод, который возвращает результаты в виде списка.

Код: Выделить всё

@Cacheable(value = "bookings", keyGenerator = "userIdListKeyGenerator")
List findAllByUserIdsIn(List userIds) {
return _repository.findAllByUserIdsIn(userIds);
}
Сценарий:
Предположим, мы сначала запрашиваем данные с помощью userIds = [1, 2, 3]. В этом случае Spring создаст в Redis пару ключ-значение, которая может выглядеть следующим образом:

Код: Выделить всё

user-ids-1,2,3 : [Booking(1), Booking(2), Booking(3)]
Теперь, если мы запросим userIds = [2, 3], Spring создаст еще одну пару ключ-значение:

Код: Выделить всё

user-ids-2,3 : [Booking(2), Booking(3)]
Как видите, данных очень много. Я хочу оптимизировать это, сохраняя каждое бронирование для каждого идентификатора пользователя как отдельную пару ключ-значение, чтобы структура Redis выглядела следующим образом:

Код: Выделить всё

user-id-1: Booking(1)
user-id-2: Booking(2)
user-id-3: Booking(3)
Таким образом, когда нам нужно получить кэшированные данные, мы можем использовать что-то вроде RedisTemplate#opsForValue#multiGet, чтобы получить сразу несколько пар ключ-значение.
Хотя я мог бы реализовать свою собственную логику кэширования с помощью RedisTemplate, мне интересно, можно ли добиться такого поведения с помощью встроенной аннотации @Cacheable.>

Подробнее здесь: https://stackoverflow.com/questions/793 ... n-in-redis
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»