Я представляю объекты JSON в Redis путем выравнивания ключей пути JSON следующим образом:
JSON-объект
{
"users": [
{
"name": "John Smith",
"address": {
"street": "12 Rainbow Avenue",
"country": "Fuzzyland"
}
}, {
"name": "Billy Bob",
"address": {
"street": "8 Rocky Lane",
"country": "Fraggleville"
}
}
]
}
Redis записей
users // SET [0, 1]
users:0 // SET [name, address]
users:0:name // STRING "John Smith"
users:0:address // SET [street, country]
users:0:address:street // STRING "12 Rainbow Avenue"
users:0:address:country // STRING "Fuzzyland"
users:1 // SET [name, address]
users:1:name // STRING "Billy Bob"
users:1:address // SET [street, country]
users:1:address:street // STRING "8 Rocky Lane"
users:1:address:country // STRING "Fraggleville"
Как видите, для свойств, которые являются массивами или литералами объектов, я использую Redis SET для хранения доступных ключей.
Мне достаточно легко преобразовать объект JSON в эту структуру, используя Node. Однако я не достаточно опытен с Redis, чтобы писать рекурсивные запросы, которые объединяют сложный результат.
Например, скажем, я хочу получить все ключи и значения для users:1
. Как мне написать запрос, который смотрит на значение users:1
, видит, что это SET, поэтому использует значения из этого как другой набор ключей запроса?