我有一个如下所示的树结构,使用PHP填充。每次填充完整的结构都非常耗时,所以我想把它放在Redis中。现在它被存储为普通的JSON,但是在添加新项目之后,我需要删除现有的JSON,并且需要再次填充并插入到Redis。 所以我希望有一个结构,以便我可以在任何层次结构中添加一个新项目,即作为父项或子项。 Redis中我可以使用哪种数据结构,我该怎么做?
[
{
"id":2,
"order":2,
"children":[
{
"id":3,
"order":1,
"children":[
],
"actions":[
{
"id":1,
"slug":"manage",
"title":"manage",
"api":[
]
}
]
},
{
"id":4,
"order":2,
"children":[
],
"actions":[
{
"id":2,
"slug":"settings",
"title":"settings",
"api":[
]
}
]
}
],
"actions":[
{
"id":190,
"slug":"update",
"title":"update",
"api":[
]
}
]
}
]
答案 0 :(得分:3)
的Redis'核心数据结构没有嵌套,所以简短的答案就是你不能轻易做到。
正如您已经正确指出的那样,存储序列化的JSON的缺点是强制完全读取/写入值,即使只触摸了一个子集。
我建议的两个备选方案是a)using Lua to manipulate the serialized JSON或b)使用ReJSON。
免责声明:我是ReJSON的作者。