"иногда мне нужно искать полезную нагрузку с другим значением в 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 скрипте.