Redis Newbie - как создать хэш внутри хеша?


12

Я хочу создать этот тип структуры в Redis: (в основном это данные JSON)

{
    "id": "0001",
    "name":"widget ABC",
    "model": "model123",
    "service":"standard",
    "admin_password": 82616416,
    "r1":
        {
            "extid":"50000",
            "password":"test123",
        },
    "r2":
        {
            "ext":"30000",
            "password":"test123",
        },
}

Что я пробовал до сих пор:

Я пытался создать хеш без "под" хешей, просто чтобы убедиться, что у меня есть основы. Итак, вот что я начал с Redis-Cli:

HMSET widget:1 id 0001 name 'widget ABC' model 'model123' service standard admin_password 82616416
HMSET widget:2 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234

Это похоже на работу. Я вижу, что у меня есть 2 "записи" данных виджетов в коллекции виджетов.

Но моя попытка создать запись с данными r1 не удалась.

Вот что я попробовал:

HMSET widget:3 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234 r1{extid 50000} 

Это создает хеш-ключ "r1 {extid" со значением хеш-функции "50000}"

Мы ценим любые предложения. Я думаю, что моя проблема в моем жаргоне. Я просто не знаю достаточно о синтаксисе redis, чтобы знать, какие слова использовать в моем поиске в Google.

Возможно, мне просто нужно «сгладить» данные следующим образом:

HMSET widget:3 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234 r1_extid 50000 r1_password test123 r2_extid 30000 r2_password test123

Спасибо.

Ответы:


14

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.