Как объединить отсортированные наборы Redis?

я использую sorted set введите в магазине Redis.
Для каждого пользователя я создаю свой KEY и поместите сюда данные:

Пример KEY:

FEED:USER:**1**, FEED:USER:**2**, FEED:USER:**3**

Я хочу выбрать данные из Redis для ключей пользователя: 1, 2, 3 и отсортировать их по количеству очков (отметка времени).

Если просто посмотрите на проблему, мне нужно выбрать из любого КЛЮЧА данные по времени и после объединить все результаты, отсортированные по баллам.

0

Решение

Есть несколько способов сделать это, но правильный зависит от того, что вы пытаетесь сделать. Например:

  1. Вы можете использовать ZRANGEBYSCORE (или ZREVRANGEBYSCORE) в своем коде для каждого FEED:USER:n ключ и «объединить» ответы в клиенте
  2. Вы можете сделать ZUNIONSTORE для соответствующих ключей, а затем выполнить ZRANGEBYSCORE для результата от клиента.
  3. Однако, если ваши «потоки» велики, поток # 2 должен быть обратным — сначала диапазон, а затем объединение.
  4. Вы также можете выполнять подобные типы обработки полностью на стороне сервера с некоторыми сценариями Lua.

РЕДАКТИРОВАТЬ: дальнейшие разъяснения

Число рейнольдса 1 — Объединение может быть выполнено на стороне клиента по результатам, полученным из ZRANGEBYSCORE, или вы можете использовать серверные сценарии Lua для этого. Используйте ОТМЕНЫ, чтобы получить метку времени и объединить / отсортировать ее. Независимо от вашего местоположения для запуска этого кода (я бы, вероятно, использовал Lua для локальности данных), реализация зависит от вас — lmk, если вам нужна помощь с этим 🙂

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]