Поиск нескольких индексов в redis

У меня есть серия текстовых данных (твитов), которые нужно индексировать по 3 атрибутам. Я хотел использовать redis так же, как время ответа должно быть быстрым. Может ли кто-нибудь предложить, как это сделать. Или я должен идти с MongoDB.

2 ответа

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

HMSET tweet:<id> text <tweet text=""> time <timestamp> ...
</timestamp></tweet></id>

Чтобы создать индекс на отметках времени твитов, вам нужно будет сохранить отсортированный набор с отметкой времени как оценка и идентификатор твита в качестве значения:

ZADD _tweet:time <timestamp> </timestamp>

Это позволит вам искать определенные твиты за определенный период времени с помощью ZRANGEBYSCORE.

Обратите внимание, что вам также придется позаботиться о сохранении индекса (modify, del). Вам также нужно будет повторить этот подход для любых дополнительных индексов. Если вы ищете больше материалов, вот несколько слайдов по теме: http://www.slideshare.net/itamarhaber/20140922-redis-tlv-redis-indices


Я немного смущен термином "индекс"... Если вы хотите искать в (JSON) данные, я думаю, что ElasticSearch (http://www.elasticsearch.org/) будет намного лучшим выбором.

Это вы используете случай, в основном, о геоинформации, взгляните на

Я думаю, что построение этого в Редисе затруднит вам время. Не поймите меня неправильно, я люблю Redis, и я большой сторонник, но я думаю, что это неправильный инструмент для того, что вы хотите построить apparantly.

Там даже плагин для ElasticSearch, который собирает твиты для вас:

https://github.com/elasticsearch/elasticsearch-river-twitter

licensed under cc by-sa 3.0 with attribution.