Как 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-значным значением