как использовать несколько ключей в Redis с Jedis? Вторичный индекс - PullRequest
0 голосов
/ 14 июля 2020

Предоставляет ли redis поддержку вторичного индекса для строкового типа данных?

Я хотел бы знать, как я могу хранить данные в redis вместе с ключом второго дня.

Пример, скажем, я хочу чтобы сохранить объект со значением ключа как 'id: 'и это полезная нагрузка в виде сжатой строки json. но иногда мне нужно искать полезную нагрузку с другим значением в json, которое также может быть уникальным.

Например, sql запрос, я могу запросить с другим полем в JSON помимо ключа?

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

1 Ответ

0 голосов
/ 14 июля 2020

"иногда мне нужно искать полезную нагрузку с другим значением в json"

Вы не можете, Redis не создан для этого. Redis работает быстро, в основном для хранения ключей и значений. Если у вас есть много полей в json для индексации, вам понадобится реляционная база данных. Да, вы можете использовать redissearch.io, хотя вы должны отметить, что его бесплатная версия не позволяет использовать на таких платформах, как AWS или Azure, вам придется развернуть свой собственный Redis, и он не поддерживает redis -кластер. Поэтому было бы лучше, если вы просто используете реляционную базу данных или Elasticsearch.

Однако, если вам нужен только один или два дополнительных индекса для поиска значения (json полезная нагрузка в вашем случае), это может быть достигнуто эффективно. .

Сохраните json как redis STRING

{"someKey", "your json payload"}

здесь ничего необычного. Или лучше, как redis HA SH

{"myRedisHa sh", [{"someKey", "" your json payload "}, {" anotherKey "," another *) 1042 * "}]}

(HA SH экономит немного памяти по STRING)

Затем сохраните ваши вторые индексы в redis HA SH

{"mySecondIndexHa sh", [{"second_index_1", "" someKey "}, {" second_index_2 "," anotherKey "}]}

Таким образом, он в основном сопоставляет ваш второй_индекс с вашим основной ключ. Вы поддерживаете второй индекс ha sh, пока обновляете основное значение STRING / HA SH. Сделайте то же самое для вашего третьего, четвертого индекса.

Обратите внимание, что несколько операций не являются atomi c, если это важно для вас, вы должны записать их в Lua скрипте.

...