2011-01-11 3 views
3

Я использую Redis для хранения журналов данных со многих аналоговых датчиков. Моя цель - сортировать данные в соответствии с отметкой времени журнала и извлекать данные из определенного диапазона дат-времени. Моя исходная модель данных заключалась в том, чтобы использовать имя датчика в качестве ключа и иметь хэш для каждой отметки времени и значение, прикрепленное к хеш-кнопке.Redis - Поиск предложений моделирования данных

So. если у меня есть SensorA, SensorB и SensorC, выполнение клавиш * вернет 1. SensorA, 2. SensorB и 3. SensorC. Выполнение hget SensorB 20110111172900 вернется, скажем 25.

Проблема с текущим моделированием заключается в том, что она не позволяет сортировать по метке времени, или так я думаю, так как все, что я пробовал, не удалось.

Может кто-нибудь предложить модель данных, которая позволила бы сортировать и извлекать диапазоны данных или предлагать правильные аргументы сортировки, которые позволили бы это в приведенной выше модели данных.

+0

Глядя снова на сортированные наборы с учетом того, что вы дали мне, делает их очевидным выбором. Спасибо, Том! –

ответ

6

Упорядоченный набор, вероятно, лучше подходит, чем хэш в этом случае.

Значение будет сочетаться с меткой времени и значением датчика. Счет будет временной меткой. Используйте ZRANGEBYSCORE для получения значений. Оба чтения и записи идут от O (1) до O (Log (N)), но вы получаете возможность возвращать диапазон значений.

Вы также можете использовать список для ввода O (1). Чтение будет O (N) для получения определенной записи, но получение последних записей будет O (1).

+0

Мы нашли небольшое предупреждение. Если датчик заканчивает чтение одного и того же значения (члена) более одного раза (что более чем очень легко), предыдущая оценка (временная метка) будет перезаписана. –

+1

Вот почему вы храните комбинацию, а не фактическую стоимость - например, zadd SensorA 20110111172900 20110111172900: 25 –

+0

Вы правы, в волнении мы полностью упустили эту информацию. Мы реализовали, как вы предложили, и это работает очень хорошо. Большое спасибо Вам. –

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