2015-05-09 2 views
5

Я пытаюсь создать redis ordered set. Захват - это необходимость упорядочивания, основанная на двух критериях, временной отметке и оценке. Но в redis, я могу указать только один критерий:Упорядоченный набор в Редисе по нескольким критериям

ZADD {key} {timestamp} {value} 

Как добавить баллы в этот заказ, а также PLZ?

Update: Вот подход, который я взял, чтобы объединить два различных заказа факторинга в одно значение с плавающей точкой оценка:

var score = Math.floor(result.created_time/(60*60*24*1000)); 
score = score + (result.matches/10); 

Просто объяснить, я сначала конвертируются метку времени к числу дней. И мое значение «match» обычно равно 0-10. Таким образом, преобразуется в десятичное значение и добавляется как вес фракции. Который дает мне самые высокие забитые записи, отсортированные в день. Это именно то, что мне нужно.

ответ

4

Используйте десятичные знаки как оценки в вашем отсортированном наборе - создайте счет, когда отметка времени равна значению слева от десятичной точки и значению справа.

+0

Спасибо за подсказку. Это помогло мне составить общий счет для меня. Я обновляю свой вопрос с помощью подхода, который я принял. – Rana

+0

Очень круто :) Кстати, этот трюк, безусловно, один из самых простых, наиболее эффективных и часто забытых в Redis IMO –

Смежные вопросы