Перемоделирование структуры Redis в соответствии с номером SQL предполагает, что будет записывать один объект набора ключей? - PullRequest
0 голосов
/ 08 мая 2020

Переделка структуры Redis как № SQL для поиска по значению, решение предлагает записать один объект набора ключей?

Моя первоначальная проблема как «найти все ключи по значению» в Redis. И, к моему удивлению, это невозможно, как кажется, или это не лучший вариант, учитывая использование Redis.

Поиск в SO, я нашел этот вопрос Найти ключ по значению ответ на него это подход к перестройке структуры.

Мой сценарий

У меня есть ключи, которые случайным образом UUID сгенерированы в коде, который хранит значение boolean. UUID представляет идентификатор запроса для приложения, которое вернет успех этого запроса после обработки. Затем мое приложение будет хранить этот идентификатор запроса до тех пор, пока он не будет обработан - есть некоторая функция повторной публикации, если по истечении 2 минут не происходит ответа для этого идентификатора запроса.

Итак, данные, хранящиеся в Redis, выглядят так:

44f672a0-36da-4906-9fa0-d3ee0b0f1989 true
33749e7e-5e62-4340-8914-cb9f6eed6111 false
and so on...

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

Сценарий решения

Итак, согласно этому вопросу и ответу я должен сохранить единственный ключ с именем false с набором значений, которые являются моим идентификатором запроса. Это будет выглядеть так:

false [33749e7e-5e62-4340-8914-cb9f6eed6111, 36b1eb8f-1576-49e7-a95a-ab852cc2624d ...]

Итак, здесь мы решили задачу поиска по значению. Поскольку у меня всего один ключ false, я обнаружил, что все не обработанные ключи.

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

Может ли этот сценарий набора обновлений быть проблемой производительности?

Идея не в том, чтобы иметь большой необработанный идентификатор запроса. Этот набор должен быть небольшим по размеру и иметь значения

Я думаю, что это проблема дизайна, а не проблема драйвера или кода, но я использую Java с Jedis для связи с Redis.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...