繁体   English   中英

在Redis中存储树结构

[英]Storing tree structure in Redis

我有一个像下面这样的树结构,使用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":[

             ]
          }
       ]
    }
 ]

Redis的核心数据结构没有嵌套,所以简短的回答是你不能轻易做到这一点。

正如您已经正确指出的那样,存储序列化JSON的缺点是强制完全读取/写入值,即使只触摸了一个子集。

我可以推荐的两个选择是a) 使用Lua来操作序列化的JSON或b)使用ReJSON

免责声明:我是ReJSON的作者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM