Как Redis можно сортировать по двум различным отсортированным наборам?

У меня есть два разных отсортированных набора.

Один для ID редактора:

article_id  editor_id
101         10
102         11
103         10
104         10

Другой отсортированный набор предназначен для сортировки по дате:

article_id  day
101         29
102         27
103         25
104         27

Я хочу объединить эти наборы, которые показывают первый редактор, отсортированный по состоянию на второй день. Какие команды мне следует использовать?

1 ответ

При условии, что article_id ценность ваших членов и что editor_id/day являются оценки в соответствующем отсортированном наборе, и при условии, что каждый article_id присутствует в обоих отсортированных наборах, вы можете сделать следующее:

ZINTERSTORE t 2 k1 k2 WEIGHTS 100 1 AGGREGATE SUM

Объяснение:

  • t это временный ключ, который будет содержать результат
  • k1 отсортированный набор, который хранит editor_id
  • k2 отсортированный набор, который хранит day
  • вес 100 умножается editor_id на 100 (то есть "сдвигает" его на два места вправо)
  • AGGREGATE SUM результаты в следующем счете: editor_id * 100 + day

Заметки:

  • ты можешь использовать ZUNIONSTORE вместо этого для того же результата
  • использование веса 100 предполагает, что day является 2-значным значением
Другие вопросы по тегам