2015-03-26 3 views
0

У меня есть два разных сортированных набора.Как 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 

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

+0

Redi s Sorted Sets - это коллекции строк, каждая из которых связана с оценкой. Какая часть ваших данных - это ключ, ценность и оценка? – thepirat000

+0

Значение article_id, значение параметра editor_id и key1 и key2 - это имена ключей. – uzay95

ответ

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 является двузначным значением