Поиск значений JSON в Redis - PullRequest
       6

Поиск значений JSON в Redis

0 голосов
/ 24 августа 2018

Я разрабатываю сервер nodeJS, который использует redis в качестве базы данных, и мне нужно получить все ключи redis, которые имеют определенное значение service_id.Например, если идентификатор службы равен 4, мне нужно получить все ключи, где service_id = 4. У меня есть следующая структура в redis, где значение равно JSON:

key: "{service_id: number}"

Можно ли отфильтровать ключи с определенным идентификатором сервиса?Может быть, есть какое-то решение, чтобы сделать это возможным?

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

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

HSET services service:1  foo
HSET services service:2  bar
HSET services service:3  buz

Таким образом, синтаксис HSET hashname fieldname value, где в качестве поля вы разделяете идентификаторы двоеточием.

Если у вас более 1 значения на ключ, вы можете сделать следующее:

HSET services service:1:name  foo
HSET services service:1:id  1
HSET services service:2:name  bar
HSET services service:2:id  2

Таким образом, разделив ваш ключ другим двоеточием, вы можете сохранить больше значений.Затем, если вы хотите получить все из службы 1, вы можете выполнить SCAN с подстановочным знаком, например так:

HSCAN services 0 match service:1:*

Черт, вы даже можете хранить каждую службу как отдельный хеш:

HSET services:1 id  1
HSET services:1 name  foo
HSET services:2 id  2
HSET services:2 name buz

В заключение - Redis - это круто!

0 голосов
/ 24 августа 2018

Redis - это хранилище значений ключей, вы не можете запросить его.Вы должны использовать ключ, чтобы получить любое значение.Если возможно, попробуйте что-нибудь вроде упругого поиска

...