2017-01-31 9 views
0

У меня очень большое количество ключей в моем хранилище данных Redis, все из которых имеют очень произвольные длинные имена случайного шестнадцатеричного текста.Как я могу найти и добавить данные ключа/значения в хэши в Redis на основе ключа/значения внутри хэша?

Все ключи, которые являются хешами, имеют ключ внутри имени, который имеет значение.

Как найти хэш, имеющий определенное уникальное значение имени, когда я не знаю, где он находится? (Так что я должен искать через все мои хэши для этого - очень плохо, я знаю) - например, добавить поле color: blue в хэш, где у меня есть уникальный name: f-377

ответ

1

Я хотел бы предложить вам создать сложение хэш будет содержит все эти уникальные значения с отображением на длинное имя. aka собственный индекс.

Чтобы создать новый хеш, пройдите все существующие ключи и добавьте поля (по одному на каждую клавишу). И в будущем, когда вам нужно создать новый ключ, вам нужно добавить новое поле в хэш индекса. Искать в этом индексе хэш - O (1), лучшее, что вы можете получить.

+0

К сожалению, я не тот, кто контролирует первоначальное распространение этих данных. –

+0

Так что это плохо. Поиск по всем ключам очень дорог - O (n), нет другого способа найти запрошенный объект быстрее, чем добавлять новую структуру индекса. Вы можете просто использовать Lua scripting https://redis.io/commands/eval, чтобы иметь более строгий контракт с другими, которые распространяют данные, если это возможно. Вы можете использовать их как хранимые процедуры в базах данных SQL. – iMysak