我想在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 语法知之甚少,不知道在我的谷歌搜索中使用什么词。
也许我只需要像这样“展平”数据:
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
谢谢。
Redis 不支持嵌套数据结构,特别是它不支持 Hash 内的 Hash :) 您基本上可以在两个选项之间进行选择:序列化内部 Hash 并将其存储在 Hash 字段中或使用另一个 Hash 键和只需在外部哈希的字段中保留对它的引用。
我建议ReJSON。它旨在准确处理这些问题。
您可以使用路径表示法来访问嵌套元素。