Разработать систему, в которой источником данных является несколько событий, и поддерживать ее в Redis [закрыто]JAVA

Программисты JAVA общаются здесь
Anonymous
Разработать систему, в которой источником данных является несколько событий, и поддерживать ее в Redis [закрыто]

Сообщение Anonymous »

В настоящее время я разрабатываю систему UserProfile, которая обрабатывает три разных типа событий:
  • UserViewEvent
  • UserSearchEvent< /li>
    UserOrderEvent
Каждое событие включает в себя метку времени и либо номер SKU, либо ключевое слово для поиска. Мне нужно поддерживать отсортированный набор этих событий, упорядоченный по меткам времени, с ограничением в 15 записей на пользователя.
В настоящее время я использую отсортированные наборы Redis (zset) для хранения каждого типа событий. событие, отсортированное по временной метке. Хотя этот подход работает хорошо, для чтения данных для каждого типа событий требуется три отдельных вызова Redis. Я хочу оптимизировать эти вызовы Redis.
Вот несколько возможных подходов, которые я рассмотрел:

[*]
Использование хешей Redis:
Хеши Redis не поддерживают вложенные наборы или списки в качестве значений. Это означает, что мне нужно будет сериализовать входные данные перед сохранением и выполнить атомарные операции, читая, десериализовывая и затем обновляя данные. Это может быть неэффективно, поскольку перед каждой записью необходимо выполнить вызов чтения.

[*]Использование хэшей Redis со сценариями Lua:
Хотя использование хэши со сценариями Lua потенциально могут сократить количество сетевых обращений, но для этого все равно требуются дополнительные вызовы Redis

[*]Использование сценариев Lua для чтения всех связанных отсортированных наборов:
Сохранение текущей архитектуры с zset, но использование сценариев Lua для чтения всех связанных отсортированных наборов за один вызов. Этот подход может минимизировать количество сетевых обращений за счет получения данных из нескольких отсортированных наборов за один раз, но все же внутри, я думаю, будет несколько вызовов Redis


Есть ли у вас какие-либо рекомендации или дополнительные подходы для оптимизации этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/788 ... t-in-redis

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