Запрос не по ключу в Redis

Я храню объекты в виде хеша, например: ключ-> клиент: 123, электронная почта-> [email protected], мобильный-> 828212, имя-> даршан и т. д.

Теперь в Redis можно запрашивать клиентов на основе электронной почты без сохранения перекрестных отношений в виде набора, что является скорее обходным путем. как, например, во время вставки хранения клиента Set as key->email:[email protected] value->customer:123 и так далее. Допустим, если у меня есть 100 полей в хэше, и мне нужно запросить 20 из них (например, электронная почта), это значительно увеличит количество ключей в экземпляре Redis, если мы также создадим каждую запись этих полей в наборах.

Есть ли другой альтернативный или лучший подход?


person darshan kamat    schedule 31.10.2017    source источник


Ответы (1)


Redis не имеет встроенной индексации/поиска по полям, потому что это не база данных, а скорее сервер структур данных (каждый ключ содержит структуру данных, такую ​​как набор/список/карта/отсортированный набор/количество уникальных значений и т. д.), но если вы используете Redis 4.0, вы можете использовать модуль поиска для этого. Ссылка находится здесь.

person Spock    schedule 01.11.2017
comment
Это стоит попробовать... но какую производительность он будет масштабировать так же хорошо, как запрос по ключевому атрибуту или даже близко к нему? - person darshan kamat; 04.11.2017
comment
Конечно, это дает очень хорошую производительность, потому что все можно проиндексировать. Единственная известная мне проблема заключается в том, что он будет хорошо работать для одного экземпляра Redis, но поддержка повторного поиска в кластере запланирована только для корпоративного Redis. - person Spock; 05.11.2017
comment
На веб-сайте упоминаются индексы только для списков, наборов, отсортированных наборов. Нет объяснения реализации вторичных индексов в полях структуры данных Hash. - person darshan kamat; 22.11.2017