2017-09-26 1148 views
0

我有一个树状结构;下面,使用PHP填充。每次填充完整的结构都非常耗时,所以我想把它放在Redis中。现在,它被存储为纯JSON,但随后又加入新的项目后,我需要删除现有的JSON和需要来填充和插入再次Redis的。 所以我想有一个结构,这样我可以在任何层次,那就是无论是作为一个父项或子项添加一个新的项目。 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":[ 

      ] 
      } 
     ] 
    } 
] 

回答

2

的Redis的核心数据结构没有嵌套,所以短期的回答是,你不能这样做,很容易。

正如你正确地指出,存储序列化JSON有强制值的完全读/写的缺点,哪怕只是一个子集感动。

的两个备选方案,我可以推荐是:a)using Lua to manipulate the serialized JSON或b)使用ReJSON

免责声明:我ReJSON的作者。