redis 新手 - 如何在散列中创建散列?

Hap*_*ays 16 nosql redis hashing

我想在redis中创建这种类型的结构:(它基本上是json数据)

{
    "id": "0001",
    "name":"widget ABC",
    "model": "model123",
    "service":"standard",
    "admin_password": 82616416,
    "r1":
        {
            "extid":"50000",
            "password":"test123",
        },
    "r2":
        {
            "ext":"30000",
            "password":"test123",
        },
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:

我试图创建一个没有“子”哈希的哈希,只是为了确保我掌握了基本知识。所以这是我从 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
Run Code Online (Sandbox Code Playgroud)

这似乎有效。我可以看到我在小部件集合中有 2 条小部件数据“记录”。

但是我尝试使用 r1 数据创建记录失败。

这是我尝试过的:

HMSET widget:3 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234 r1{extid 50000} 
Run Code Online (Sandbox Code Playgroud)

这将创建一个散列值“50000}”的散列键“r1{extid”

任何建议,将不胜感激。我认为我的问题是我的行话。我只是不太了解 redis 语法,无法知道在我的谷歌搜索中使用哪些词。

也许我只需要像这样“展平”数据:

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
Run Code Online (Sandbox Code Playgroud)

谢谢。

Ita*_*ber 18

Redis 不支持嵌套数据结构,特别是它不支持 Hash 内的 Hash :) 您基本上可以在两个选项之间进行选择:序列化内部 Hash 并将其存储在 Hash 字段中或使用另一个 Hash 键和只需在外部哈希的字段中保留对它的引用。