2017-09-26 13 views
0

J'ai une structure arborescente comme celle-ci, qui est remplie avec PHP. Le remplissage de la structure complète chaque fois prend du temps et je voudrais donc le mettre dans Redis. Maintenant, il est stocké en tant que JSON simple, mais de nouveau après l'ajout d'un nouvel élément, j'ai besoin de supprimer le JSON existant et j'ai besoin de remplir et d'insérer à Redis à nouveau. Donc, je voudrais avoir une structure pour pouvoir ajouter un nouvel élément dans n'importe quelle hiérarchie, que ce soit en tant qu'élément parent ou enfant. Quelle structure de données dans Redis I pouvez-vous utiliser pour cela et comment puis-je le faire?Enregistrer une structure arborescente dans 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":[ 

      ] 
      } 
     ] 
    } 
] 

Répondre

2

Les structures de données de base de Redis n'ont pas d'imbrication, donc la réponse courte est que vous ne pouvez pas le faire facilement.

Comme vous l'avez noté correctement, le stockage du JSON sérialisé présente l'inconvénient d'exiger une lecture/écriture complète des valeurs, même si un seul sous-ensemble est touché. Les deux alternatives que je peux recommander sont a) using Lua to manipulate the serialized JSON ou b) en utilisant ReJSON.

Avis de non-responsabilité: Je suis l'auteur de ReJSON.